python文件操作相关知识总结
- 读文件操作(open)
语法:open(filename,mode)
filename表示文件名,mode表示打开的模式(见图片)
f=open("text.txt","r")
使用open打开文件后就可以开始读文件了,如果只用r开头的mode读文件,文件不存在,则会抛出IOError的错误,读取成功后用函数读取文文件
f.read()#一次读取所有内容
f.read(size)#每次读取最多size个字节的内容
f.readline()#readline() 方法用于从文件读取整行,包括 "\n" 字符
for line in f.readlines():#一次性对所有内容并按行返回list
print(line.strip()) # 把末尾的'\n'删掉
#f.next():
for index in range(5):
line = next(f)
print ("第 %d 行 - %s" % (index, line))
文件读取完毕后一定要调用f.close()关闭文件,因为文件对象会占用操作系统的内存资源,,并且操作系统同一时间能打开的文件数量也是有限的,一种完整的写法:
try:
f = open('a.txt', 'r')
print(f.read())
finally:
if f:
f.close()#文件对象一定会关闭
另外python引入了with语句来帮我们自动调用close()函数,就像这样:
with open('a.txt', 'r') as f:
print(f.read())
注意如果要读取非UTF-8编码的文本文件需要给open()函数传入encoding参数如:
f = open('gbk.txt', 'r', encoding='gbk')
f.read()
- 写文件
通过前面的图片内容,写文件的操作例子:
f = open("foo.txt", "w",encoding="UTF-8") #写的方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式
f.write("我要学Python\n") #写入,文件夹存在覆盖,不存在创建
f.close() #关闭文件夹
记住一定要调用close语句,因为操作系统会先把内容写到内存中,只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘,忘记调用,可能只写入了一半,如果用with语句,就会避免这个错误:
with open('test.txt', 'w') as f:
f.write('Hello, world!')
读写模式:
f = open("a.txt", "w+",encoding="UTF-8") #写的方式打开的文件,encoding是转码的意思
,告诉解释器,是以UTF-8的格式
f.write("我要学Python\n") #写入,文件夹存在覆盖,不存在创建
print("定位之前的光标位置:%s" % (f.tell()))
f.flush() #刷新文件使内存的内容刷新至文件夹
f.seek(0,0) #因为W+读取文件之后会定位在文件尾部,
所以需要重新定位一下光标位置,要不无法读取,file.seek(off, whence=0):
从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。如果设定了whence参数
,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
print("定位之后的光标位置:%s" % (f.tell()))
i = f.read()
print(i)
f.close() #关闭文件夹
输出:
定位之前的光标位置:17
定位之后的光标位置:0
我要学Python
writelines() 方法用于向文件中写入一序列的字符串:
seq = ["我要学Python 1\n", "我要学Python 2"]
fo.writelines( seq )
文件的操作方法:
(完)