Python文件类操作


f = open('123.text','w',encoding='utf-8')       # 打开文件对象,'写'模式

f.write('hello world')          # 写入指定字符,清空原有的字符,返回原有字符数量

f.close()               # 关闭文件对象;每次打开操作完都要关闭,否则内容还在缓存中

f = open('123.text','r',encoding='utf-8')       # 打开文件对象,'读'模式

print(f.read(5))        # 读取指定数量的字符,不指定则读取所有的字符

print(f.readlines())    # 把每行做成列表里的一个值,包含换行

f.close()           # 关闭文件对象
for i in f:         # 递归输出每行
    print(i)
print(f.tell())     # 读取光标位置
f.seek(1)        # 移动光标位置到指定位置,默认光标在0位置

d = eval(f.read)       # 把文件里的内容按其字符格式转成对应的数据类型

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
x  |   写,如果文件存在就会报错



二进制方式写入、读取

f = open('Bug.log', 'wb')           # 以二进制方式写入

f.write(bytes('中国', encoding='utf-8'))      # 必须先把字符转换成字节,并指定编码

f.close()
f = open('Bug.log', 'rb')       # 以二进制方式读取
p = f.read()
print(type(p))
print(str(p, encoding='utf-8'))     # 读取出来时也要转换成字符串

f.close()

flush 刷新缓存

f = open('Bug.log', 'r+', encoding='utf-8')

f.write('hehe')
f.flush()           # 在文件没有关闭的情况下,写入的内容不会立即存入文件,而是在缓存中, 
i = input('>>')     # 用flush可以立即把写入的内容存入文件,而不必关闭文件。
f.close() 

with as ...

with open('1.txt', 'w', encoding='utf-8') as b1, open('Bug.log', 'r', encoding='utf-8') as b2:  # python2.6之后可以用with同时打开两个文件
    for line in b2:  # 用for循环可以一行一行读取
        b1.write(line)  # 依行写入到另一个文件



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值