总目录:https://www.jianshu.com/p/e406a9bc93a9
Python - 子目录:https://www.jianshu.com/p/50b432cb9460
新建txt文件“测试1.txt”,“测试2.txt”存放于pycharm项目根目录,测试1.txt文件内存放有《望庐山瀑布》正文。
三种基本的操作模式 r(只读) w(只写) a(追加)
流程:1 创建文件对象 2 调用文件方法进行操作 3 关闭文件
r(只读)
a=open('测试1.txt','r') #打开文件,选择打开方式为只读
data1= a.read() #读取文件内容,读取方法为全部读取。
print(data1) #打印读取内容。
日照香炉生紫烟,
遥看瀑布挂前川。
飞流直下三千尺,
疑是银河落九天。
data2= a.read(5) #读取文件内容的前五个字符。
print(data2) #打印读取内容。
日照香炉生
a.close #关闭文件
w(只写)
a=open('测试2.txt','w') #打开文件,选择打开方式为只写
a.write("日照香炉生紫烟,") #写入文件,文件内原内容清空。
data1=a.read()
print(data1) #打印读取内容,查看是否写入。
日照香炉生紫烟,
a.close #关闭文件
a(追加)
a=open('测试2.txt','a') #打开文件,选择打开方式为追加
a.write("\n遥看瀑布挂前川。\n") #写入文件,追加到源文件尾部。
data1=a.read()
print(data1) #打印读取内容,查看是否写入。
日照香炉生紫烟,
遥看瀑布挂前川。
a.close #关闭文件
其他方法
fileno()
文件描述符方法(文件操作句柄的标识符,不为零但唯一)在某一时间段内只能有一个操作进程使用。
a=open('测试2.txt','w') #打开文件,选择打开方式为只写
print(a.fileno()) #查看此文件文件描述符
3 #此文件在此电脑上此次操作的标识符为3
a.close #关闭文件
readline()
读取一行(读取到第一个/n换行符处)
a=open('测试1.txt','r') #打开文件,选择打开方式为只读
data1= a.readline() #读取文件内容,读取第一行
print(data1) #打印读取内容。
日照香炉生紫烟,
data2= a.readline()
#接着上一个readline后再操作一个则会读取第二行(因为第一个readline操作后标识到第二行处)
print(data2) #打印读取内容。
遥看瀑布挂前川。
a.close #关闭文件
redlines()
读取所有行
a=open('测试1.txt','r') #打开文件,选择打开方式为只读
data1= a.readlines() #读取文件内容,读取第一行
print(data1) #打印读取内容。
日照香炉生紫烟,
遥看瀑布挂前川。
飞流直下三千尺,
疑是银河落九天。
a.close #关闭文件
指定在一行尾部添加字符
迭代器方法
f=open('测试1.txt','r',encoding='UTF-8')
number=0
for i in f:
number+=1
if number == 3:
i = ''.join([i.strip(), 'iiiii'])
print(i.strip())
f.close()
日照香炉生紫烟,
遥看瀑布挂前川。
飞流直下三千尺,iiiii
疑是银河落九天。
tell()
返回光标当前位置
a=open('测试1.txt','r') #打开文件,选择打开方式为只读
print(a.tell()) #打印当前光标位置
0
data1= a.read(2) #读取两个字符(中文一个字符两个位置,英文一个。)
print(a.tell()) #打印当前光标位置
6
a.close #关闭文件
seek()
指定光标的位置
a=open('测试1.txt','r') #打开文件,选择打开方式为只读
print(a.read(2)) #读取两个字符
日照
print(a.read(2)) #再读取两个字符
香炉
a.seek(0) #把光标位置设置在0
print(a,read(2)) #再读取两个字符查看光标是否设置成功
日照
a.close #关闭文件
truncate()
指定长度的话,就从文件的开头开始截断指定长度,其余内容删除;不指定长度的话,就从文件开头开始截断到当前位置,其余内容删除。
a=open('测试1.txt','r+') #打开文件,选择打开方式为读写
a.truncate(6) #截取6个字符
a.close #关闭文件
这时打开文件测试1.txt,发现只有日照香三个字。
flush
刷新缓冲区,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
#进度条实例
import sys,time
for i in range(30):
sys.stdout.write("*")
sys.stdout.flush()
time.sleep(0.1)
#print的flush
import sys,time
for i in range(30):
print('*',end='',flush=True)
time.sleep(0.1)
终极问题 如何在磁盘修改文件
常规思路,由于磁盘存储机制不能完成
f=open('小重山.txt','r+',encoding='utf8')
number=0
for line in f:
number+=1
if number==3:
f.write('alex')
只能采取重新创建一个文件的思路
f_read=open('小重山.txt','r',)
f_write = open('小重山2.txt','w',encoding='utf8')
number=0
for line in f_read:
number+=1
if number==6:
line=''.join([line.strip(),'alex\n'])
# line='hello 岳飞\n'
f_write.write(line)