文件操作

带b的基本不用,存储传输用,r+最常用

 

f = open('info.txt', mode='r', encoding='utf-8') #rb用于非文字文件储存传输
content = f.read()
print(content)
f.close()

read 一次性读完(占内存)

readlines 一次性读完(占内存)

readline 一行一行读(图片,视频不按行)

for循环  最好

 

f = open('log.txt', mode ='w', encoding='utf-8') #没有文件创建文件
f.write('This is a log file') #将原文件内容全部清除,并写入新内容
f.close()

f = open('log.txt', mode='wb') #wb直接写入bytes类型,不要编码
f.write('This is a log file'.encode('utf-8')) #编码为utf-8后写入文件
f.close()

write  

 

追加

f = open('log.txt', mode='a', encoding='utf-8') #a 追加写入
f.write('\nAppend line')
f.close()

f = open('log.txt', mode='ab') #ab 追加写入bytes类型
f.write('\nAppend line with bytes'.encode())
f.close()

 

读写

#读写,先读后写,如果先写再读,会把前面的内容覆盖写入,读的内容为写入内容后还剩的原文件内容
f = open("log.txt", mode='r+', encoding='utf-8')
conc = f.read()
print(conc)
f.write('\nThis a read&write seccsion')
f.close()

f = open("log.txt", mode='r+b')
conc = f.read()
print(conc)
f.write('\nThis a read&write seccsion with encode in r+b mode'.encode('utf-8'))
f.close()

 

写读

 

调光标(指针)

f.seek(0)

seek 指定光标位置

tell 获取光标位置

truncate 截取文件

 

f = open("info.txt", mode='r+', encoding='utf-8')
f.seek(3) #seek按字节移动,utf-8的一个中文字符需要移动3
print(f.tell()) #打印光标的位置
count = f.tell()
f.seek(count - 3) #找到光标位置,并且把光标前移3个字节
cont = f.read(3) #读前3个字符,中文也算一个字符
print(cont)
f.close()

 

f = open("log.txt", mode='r', encoding='utf-8')
cont = f.readline() #读一行
conts = f.readlines() #每一行当做一个元素添加到列表
print(conts)
f.seek(0)
for line in f:
    print(line)
f.close()

 

另一种打开文件方式,推荐

with open('info.txt', mode='r+', encoding='utf-8') as obj, open('log.txt', mode='r',encoding='utf-8') as f1:
    print(obj.read())
    print(f1.read())
    #不需要close()

 

删除文件和重命名文件

import os

os.remove('a.txt')

os.rename('a.bak', 'a.txt')

posted @ 2020-03-26 22:18  vivagoal  阅读(108)  评论(0)    收藏  举报