文件操作

文件

打开模式

打开模式执行操作
‘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()
'这个是我新创建的文本文件'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彖爻之辞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值