一、文件操作
1.打开方式分为两种:绝对路径打开,相对路径打开
d:asd.txt asd.txt
2.编码方式:utf-8、gbk。。。
3.操作方式:只读、只写、追加、读写、写读。。。
读:r、rb、r+
打开一个文件:
f = open('file',mode='r')
print(f.read())
f.close()
在文件里追加内容:
f = open('file',mode='r+',encoding='utf-8')
print(f.read())
f.write('123')
f.close()
##这里会遇到个问题:先读再写写的内容读不出来,要是先写再读就会输出空。为什么会出现这个问题,原因是指针没有从头开始。
解决办法:加一行:f.seek(0) 就可以让指针到头
f = open('file',mode='a+',encoding='utf-8')
f.write('123')
f.seek(0)
print(f.read())
f.close()
修改文件内容:
f = open('file',mode='ab')
f.write('123'.encode('utf-8'))
f.close()
写:w、w+、wb
w只写,把文件内容都清空,然后再写入,如果没有这个文件则自动创建文件。
其他跟r+、rb用法一样。
f = open('file',mode='w',encoding='utf-8')
f.write('123')
f.close()
追加:a、a+、ab
a在文件内容后追加内容。其他跟r一样。
f = open('file',mode='a',encoding='utf-8')
f.write('123')
f.close()
其他功能:
f.tell() 输出光标位置
f.seek()移动光标到第几个字节(中文3个字节,如果移动2个则报错)。f.seek(0,2) 移动到结尾。
f = open('file',mode='r+',encoding='utf-8')
print(f.tell())
f.seek(4)
print(f.tell())
f.close()
f.readline()一行一行的读文件内容(只读第一行)
f.readlines()每一行当成列表中的一个元素,添加到list中,可以for循环读,会有换行用strip去掉。
f = open('file',mode='r+',encoding='utf-8')
line = f.readlines()
for i in line:
print(i.strip())
f.close()
f.truncate(3) #保留前3个字节(一个中文汉字)
另一种读取方法:with
with open('file',mode='a+',encoding='utf-8') as f:
f.write('asd')