文件
打开模式
打开模式 | 执行操作 |
---|---|
‘r’ | 以只读方式打开文件(默认) |
‘w’ | 以写入的方式打开文件,会覆盖已存在的文件 |
‘x’ | 如果文件已经存在,使用此模式打开将引发异常 |
‘a’ | 以追加写入模式打开,如果文件存在,则在末尾追加写入 |
‘b’ | 以二进制模式打开文件 |
‘t’ | 以文本模式打开文件 |
‘+’ | 可读写模式(可添加到其他模式中使用) |
‘U’ | 通用换行符支持 |
文件对象方法
文件对象方法 | 执行操作 |
---|---|
f.close() | 关闭文件 |
f.read(size=-1) | 从文件读取sze个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回 |
f.readline() | 以写入模式打开,如果文件存在,则在末尾追加写入 |
f.write(str) | 将字符串st写入文件 |
f.writelines(seq) | 向文件写入字符串序列seq,seq应该是一个返回字符串的可选代对象 |
fseek(offset,from) | 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offe个字节 |
f.tell() | 返回当前在文件中的位置 |
示例
有这个文件,文件名:aaa.txt
内容为:
考勤管理制度
第1条:目的
第2条:使用范围
第3条:基本定义
第4条:处罚标准
第5条:上班时间规定
第6条:打卡规定
打开这个文件aaa.txt
>>> f = open('aaa.txt',encoding='UTF-8')
>>> f
<_io.TextIOWrapper name='aaa.txt' mode='r' encoding='cp936'>
读取全部记录
>>> f.read()
'考勤管理制度\n第1条:目的\n第2条:使用范围\n第3条:基本定义\n第4条:处罚标准\n第5条:上班时间规定\n第6条:打卡规定'
读取指定字符的记录
>>> f.close()
>>> f = open('aaa.txt',encoding='UTF-8')
>>> f.read(6)
'考勤管理制度'
读取整行记录
>>> f.close()
>>> f = open('aaa.txt',encoding='UTF-8')
>>> f.readline()
'考勤管理制度\n'
在文件中移动文件指针
因为文档是由汉字组成的,如果seek(8,0),会移动指针到一个汉字的中间,这时当读取的时候回报错。
Invalid start byte 无效的开始字节。
>>> f.seek(9,0)
9
>>> f.readline()
'理制度\n'
>>> f.readline()
'第1条:目的\n'
>>> f.close()
>>> f = open('aaa.txt',encoding='UTF-8')
>>> f.seek(8,0)
8
>>> f.read() # 报错,
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\500 Python\lib\codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 0: invalid start byte
转换为列表
>>> f.close()
>>> f = open('aaa.txt',encoding='UTF-8')
>>> list(f)
['考勤管理制度\n', '第1条:目的\n', '第2条:使用范围\n', '第3条:基本定义\n', '第4条:处罚标准\n', '第5条:上班时间规定\n', '第6条:打卡规定']
>>> f.close()
>>> f = open('aaa.txt',encoding='UTF-8')
>>> lines = list(f)
>>> for each_line in lines:
... print(each_line)
...
考勤管理制度
第1条:目的
第2条:使用范围
第3条:基本定义
第4条:处罚标准
第5条:上班时间规定
第6条:打卡规定
下面的效率更高
>>> f.seek(0)
0
>>> for each_line in f:
... print(each_line)
考勤管理制度
第1条:目的
第2条:使用范围
第3条:基本定义
第4条:处罚标准
第5条:上班时间规定
第6条:打卡规定
创建文件并写入
在默认文件夹中会创建text.txt文件。这个文本文件没有使用
encoding='UTF-8'
所以再次打开时也没有使用这个开关
>>> f = open('text.txt','w')
>>> f.write('这个是我新创建的文本文件')
12
>>> f.close()
>>> f = open('text.txt')
>>> f.read()
'这个是我新创建的文本文件'