---恢复内容开始---
#文件操作基本流程
打开→操作→关闭
打开文件:f = open ('静夜思', 'r', encoding='utf8')
操作句柄 = 打开(创建) (‘文件名’ ,‘打开方式’(r,w,a) , 编码方式)
操作文件:
data = f.read(3) #读取文件前3个字符
print(data) #将读取的结果打印出来
关闭文件:
f.close()
#文件操作基本方法
文件以什么方式打开(r,w,a),才能进行对应方式的操作。
读文件:
使用‘r’打开(必须文件已存在)
写文件:(刷新内容)
使用‘w’打开(打开时指针在文件开头)
f = open('静夜思2','a',encoding='utf8') f.write('hello world') f.write('alex')#操作执行过程中内容一直在缓冲区 f.close()#所有语句执行完毕f.close()后,内容才存入磁盘
写文件:(追加内容)
使用‘a’打开(打开时指针在文件尾部)
#文件操作具体方法
f = open('静夜思2','r',encoding='utf8')
# readline()从指针位置开始读取某一行 # print(f.readline()) # print(f.readline()) # readlines()从指针位置读取剩下全部行 print(f.readlines()) #结果是列表:['hello worldalexhello worldalex\n', 'hello worldalex\n', 'hello worldalex\n', 'hello worldalex\n', 'hello worldalex']
for i in f.readlines()
print(i.strip()) #结果是原文档表现方式,相当于read(),即从指针位置读取剩下全部
#如何给某一行增加内容
number = 0
for i in f.readlines():
number += 1
if number == 4:
i=''.join((i.strip(),'ilikeit'))
print(i.strip())
f.close()
一般不使用readlines,直接使用f.
number = 0
for i in f: # for循环内部将f对象做成了一个迭代器,用一行取一行。
number += 1
if number == 4:
i=''.join((i.strip(),'ilikeit'))
print(i.strip())
f.close()
打印指针所在位置:
f = open('静夜思2','r',encoding='utf8') print(f.tell()) print(f.read(3)) print(f.tell())
f.seek(0) #调整指针位置到第0个位置
print(f.read(4))
如何每写一行,便往磁盘中存一行
# f.flush() #将临时缓冲区的数据刷到磁盘中 # # import sys,time # for i in range(30): # sys.stdout.write('*') # # sys.stdout.flush() # time.sleep(0.2) import time for i in range(30): print('*',end='',flush=True) time.sleep(0.2)
从指定指针位置截断文档,删除指针后边所有内容
f = open('静夜思','a',encoding='utf8') f.truncate(5) # 只保留文档前五个字符
#以r+,w+,a+方式打开文件
r+先读后写(先执行代码中所有‘读’语句,再执行所有‘写’语句,与代码书写顺序无关)
执行写操作时,直接在文件尾部追加内容。
f = open('静夜思','r+',encoding='utf8') f.write('stupid') #执行顺序:4 print(f.readlines()) #执行顺序:1 f.write('stupid') #执行顺序:5 print(f.readlines()) #执行顺序:2 f.write('stupid') #执行顺序:6 print(f.readlines()) #执行顺序:3
w+先写后读(先清空文件,再执行代码中所有‘写’语句,再执行所有‘读’语句,与代码书写顺序无关)
a+先写后读(先执行代码中所有‘写’语句,再执行所有‘读’语句,与代码书写顺序无关)
#如何修改文件
给文件的某一行增加内容
f = open('静夜思','r',encoding='utf8') f2 = open('副本3','w',encoding='utf8') number = 0 for line in f: number += 1 if number ==3: line=''.join((line.strip(),'PPAP\n')) f2.write(line) f.close() f2.close()
# with语句的使用(避免使用.close)
with open('静夜思','r',encoding='utf8') as f, open('副本4','w',encoding='utf8') as f2: number = 0 for line in f: number += 1 if number ==3: line=''.join((line.strip(),'PPWP\n')) f2.write(line)
---恢复内容结束---