python打开dat文件_科学网—Python: 文件的打开,读写和关闭 - 刘洋洋的博文
文件打开,读写和关闭的顺序:
打开文件;# 打开后才能进行读写
读文件或写文件;
文件关闭。# Python会缓存写入的数据,如果程序异常崩溃,数据就不能写入到文件当中。安全起见,文件用完后要主动关闭文件。
文件的打开
file_obj=open(filename, mode='r', buffering=-1,..)
filename是文件名(或路径),为强制参数,其他参数是可选的。
mode表示模式,为可选参数,默认值为r,即read(读)。
buffering表示是否需要缓冲,为可选参数,默认值为-1,表示使用系统默认的缓冲区大小。(0代表不缓冲,>=1的值表示缓冲一行或指定缓冲区大小)。
用help(open)查看其他参数。退出help()的方法:q。
>>> f1 = open ('test1.txt') # 从test1.txt中读数据,使用系统默认的缓冲区大小。
>>> f2 = open ('test2.txt','w')
# 若test2.txt存在,则清空该文件内容,准备写入新内容;若该文件不存在,则新建文件test2.txt,准备写入新内容。
>>> f3 = open ('record.dat','wb',0)
# 写一个二进制文件record.dat,不缓冲。说明:Python中,只有二进制文件可以不使用缓冲,而文本文件必须要使用缓冲。
open函数的mode参数:
r - 读,文件必须存在。
w - 写,清空文件内容或新建一个文件。
a - 追加,在文件尾部加内容。
r+ 等同于 r+w,可不清空原内容
w+ 等同于 = w+r
a+ 等同于 = a+r
二进制文件的读、写、追加:
rb - 读, rb+ = rb+w
wb - 写, wb+ = wb+r
ab - 追加, ab+ = ab+r
文件相关函数
open()函数的返回值 -
1. open()函数返回一个文件(file)对象。
2. 文件对象可迭代,因此可遍历其中的每一个子项。
3. 有关闭和读写文件相关的方法(即跟对象有关的函数)。
对象名.方法名()
- f.read(), f.write(), f.readline(), f.readlines(), f.writelines()
- f.close()
- f.seek()
写文件 - f.write()
file_obj.write (str)
- 将一个字符串写入文件
传统写法(不推荐)
>>> f = open ('test.txt', 'w')
>>>f.write ('Hello, World!')
>>> f.close ()
with语句(推荐使用)# 执行后主动关闭文件句柄,因而在程序当中不需要另外写上f.close()关闭文件。
>>> with open ('test.txt', 'w') as f:
f.write ('Hello, World!')
读文件 - f.read()
file_obj.read(size) # 从文件中至多读出size字节数据,返回一个字符串
file_obj.read()# 将当前位置直到文件结束的数据全部读出,返回一个字符串
>>> with open ('/Users/Yangyang/Desktop/test.txt','r') as f:
... a = f.read(5) # 先读出5个字节
... b = f.read() # 再将余下的字节读出来
>>> a
'Hello'
>>> b
', World!'
读取一行数据 - f.readline()
读取多行数据 - f.readlines()
写入多行数据 - f.writelines()
>>> with open ('/Users/Yangyang/Desktop/test.dat') as f:
... ln = f.readlines()
... print (ln)
Output:
['我来到的地方n', '有着悠久的历史和古老的传说n', '有着朝圣者的荒漠古道和挺立于心中的神女雪峰n', '他们圣洁的祷告n', '使树木狂舞 流水欢歌n', '我听见一个灵魂在抽泣n']
# 返回结果是一个列表,n是换行符。Python在文件中读取行的时候并不删除换行符。
脚本示例:
将文件test.dat的字符串前加上序号1、2、3...后写到另一个文件stest.dat中。
文件指针指向我们需要的位置 - f.seek()
在读写文件的时候都有一个文件指针,数据从文件指针所在的位置开始读写。
file_obj.seek(offset, whence=0)
在文件中移动文件指针,从whence偏移offset个字节
offset - 偏移量
whence - 起始位置,默认值是0 (0 - 文件头部, 1 - 当前位置, 2 - 文件尾部)
f.seek(0,0) 或者f.seek(0) - 把文件指针移到文件开头
f.seek(1,50) - 把文件指针往后移动50个字节
脚本示例:
在stest.dat文件中追加字符串s = 'Poem by Mang Lin'.
- readlines产生错误结果:
- 通过writelines写入数据,此时文件指针已经在文件尾部,再用readlines读数据就会产生不正确的结果。
- readlines产生正确结果:
- 在writelines后添加一行 f.seek(0)
练习:
转载本文请联系原作者获取授权,同时请注明本文来自刘洋洋科学网博客。
链接地址:http://blog.sciencenet.cn/blog-3031432-1060080.html
上一篇:Python: 异常处理try-except语句和with语句
下一篇:Python: 标准文件/标准输入输出
python打开dat文件_科学网—Python: 文件的打开,读写和关闭 - 刘洋洋的博文相关推荐
- python频次统计图_科学网—Python小例:统计文本中单词出现的频次 - 康建的博文...
import re zen=''' The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better ...
- python做社会网络分析_科学网-python 社会网络分析工具之igraph-郗强的博文
1.networkx 2.igraph 3.SNAP 2.igraph igraph是免费的复杂网络(graphs)处理包,可以处理百万级节点的网络(取决于机器内存).igraph提供了R和C语言程序 ...
- python对数运算符号_科学网—Python中算数运算符之注意及np.logspace - 张伟的博文...
(一)算数运算符 数字2 是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. (-5+4j ...
- python word模板 图_科学网—Python绘制可插入Word的高清矢量图(SVG转EMF) - 任晓东的博文...
Python具有强大的绘图功能.在科学论文中通常需要矢量图,而且如果能方便的插入到word中更好.Python中自带的绘图库matplotlib可以将图保存成svg格式,但是我通常喜欢使用emf的矢量 ...
- python社会网络分析教授_科学网—python 社会网络分析工具之networkx - 郗强的博文...
1.networkx 2.igraph 3.SNAP 1.networkx NetworkX是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网 ...
- linuxcnc 多轴联动_科学网—【LinuxCNC】开源机床Linux操作系统 - 刘洋的博文
LinuxCNC是昨天意外发现的一款开源实时Linux机床操作系统,实际上也适合做机器人.机器手的操作系统:重点是[实时RealTime Linux系统].官方网站: 这款系统运行于X86结构的CPU ...
- python读取hdf5文件_科学网—python读hdf5文件 - 钱磊的博文
读hdf5文件和读fits差不多,需要知道类似文件头的东西,这里是一个变量的名称.这可以通过定义一个prt函数结合h5py报的工具来实现如下 def prt(name): print(name) fi ...
- python画矢量图_科学网—Python绘制可插入Word的高清矢量图(SVG转EMF) - 任晓东的博文...
Python具有强大的绘图功能.在科学论文中通常需要矢量图,而且如果能方便的插入到word中更好.Python中自带的绘图库matplotlib可以将图保存成svg格式,但是我通常喜欢使用emf的矢量 ...
- python多因素方差分析_科学网—Python学生物统计---方差分析---学习笔记7 - 邓飞的博文...
OLS: 最小二乘法from scipy import stats import pandas as pd import numpy as npfrom statsmodels.formula.api ...
最新文章
- 在CentOS 7中安装与配置Tomcat-8方法
- Global.asax详解
- OKR的本质是什么?目标如何制定?
- svn: Checksum mismatch while updating 'D:\workspace\demo\test\.svn\text-base\test.php.svn-base'
- 2010年杭电计算机研究生复试---笔试编程
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- Swift基础之方法实战
- java对字符串归一化_搜索引擎中的字符串归一化 | 学步园
- django+xadmin在线教育平台(十二)
- 什么是数字孪生?有哪些关键能力?
- java生成pdf417_生成PDF417的JAVA包.rar
- 7-1 宿舍谁最高? (20 分)
- mysql5.5默认引擎,在MySQL5.5以上系统中,默认的存储引擎是( )。
- U8普及版在win7系统中,UFO报表一点打印或预览就报错
- oracle sqldeveloper 115网盘 提取码
- 360浏览器怎么设置主页
- 零基础英语语法速成(一)
- 【economic】程序员外包平台
- 中望3d快捷键命令大全_中望3D快捷键设置
- ​什么是bug?bug的源头在哪里?
热门文章
- 51控制DM542驱动电机程序
- 铲子哥,可在CentOS安装mysql数据库时铲土填坑
- 第一次做学年设计 学生成绩管理系统
- 校招必看硬核干货:IC前端这样学,秒变offer收割机!
- 机箱主板跳线接法详解(图) (机箱面板的POWER LED线,POWER SW线,HD线,RESET线,usb线)
- 分享Silverlight/WPF/Windows Phone一周学习导读(05月16日-05月21日)
- Allure标记的使用
- 2021.11浙江高考成绩查询,2021浙江教师资格证
- Midas—预应力混凝土连续梁桥自动设计程序
- 2022年,还能转行数据分析师吗