文件操作
打开模式 | |
---|---|
w(write) | 以只写的方式。如果该文件已经存在则将其覆盖。如果不存在,则创建一个文件用于写入。 |
r(read) | 以只读的方式打开。文件的指针将会放在文件的开头。这是默认的模式 |
a(append) | 以追加的方式打开文件。如果该文件存在将新的内容追加到文件末尾。如果不存在,则创建新文件用于写入。 |
rb(read binary) | 以二进制的并且只读的方式打开一个文件。文件指针将会放在文件的开头。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。写进去的内容会覆盖原来的内容。 |
'''
读数据:使用read(count)函数可以从文件中读取数据,count表示要从文件中读取的数据的长度。
如果没有传,那么表示读取文件中的所有的数据。
'''
fp = open('test.txt','r')
# 读取前面5个字节的数据
line = fp.read(5)
print(line)
# 读取所有的数据
line = fp.read()
print(line)
- 在Python3文件操作中默认的编码是系统自带的编码,需要指定编码方式
f = open('123.txt','w')
f.write('哈哈')
f.close()
out:
����
f = open('123.txt','w',encoding='utf-8')
f.write('哈哈')
f.close()
out:
哈哈
- 以w方式写入会覆盖掉原有数据,以a方式写入不会覆盖,r+指针在开头,w+无用
#获取当前文件指针的位置:在读写的过程中,如果想要知道当前文件指针所在的位置,可以通过tell()来获取。
fp = open('xxx.txt','r')
str = fp.read(3)
print('读取到的数据是:%s' % str)
# 查看当前位置
position = fp.tell()
print("当前文件位置:%d" % position)
fp.close()
'''
定位到某个位置:如果在读写文件的过程中,需要从另外一个位置进行操作,可以使用seek()。seek(offset,from)有2个参数,意义为如下:
offset:偏移量。
from:相对位置。
0:表示从文件开头。
1:表示从当前位置。
2:表示从文件末尾。
'''
# demo1:把相对位置设置为从文件开头,并且向后偏移5个字节。
fp = open("xxx.txt","r")
position = fp.tell()
print("当前文件指针位置是:%d" % position)
fp.seek(5,0)
position = fp.tell()
print('当前位置是:%d' % position)
str = fp.read()
print('读取到的字符串:%s' % str)
# demo2:把位置设置为:离文件末尾,3个字节处
fp = open("xxx.txt","r")
# 查看当前位置
pos = fp.tell()
print('当前文件指针位置:%d' % pos)
# 重新设置位置为离文件末尾3个字节位置,会报错
# fp.seek(-3,2)
fp.seek(0,2)
fp.seek(fp.tell()-3,0)
# 读取数据
str = fp.read()
# 关闭文件
fp.close()
#遍历文件
with open('123.txt','r',encoding='utf-8') as fp:
for line in fp:
print(line)