文件操作
Posted finance-it-gao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。
1.文件操作流程:打开,操作,关闭:
f=open(‘文件1号‘,‘r‘,encoding=‘utf8‘) #打开文件对象,命名为f(r代表读模式)
#print(f.read()) #f.read()是读取文件全部内容
print(f.read(3)) #读取前三个字符,读完后光标移动到下一字符
print(f.read(4)) #读取4个字符(读取时默认每一行最后有一个换行符)
#f.close() #关闭文件
#f=open(‘文件1号‘,‘w‘,encoding=‘utf8‘) #w代表写模式
#f.write(‘hello ‘ )
#f.write(‘萨瓦迪卡‘) #w模式下write写入时会将原来的内容格式化
#f.close()
#import time
#f=open(‘文件1号‘,‘a‘,encoding=‘utf8‘) #a代表append模式
#f.write(‘ 马勒戈巴子‘) #给文件增加新内容
#time.sleep(20) #在没有关闭文件的情况下,20s以后才会写进去
2.文件操作具体方法:
f=open(‘小重山‘,‘r‘,encoding=‘utf8‘)
#print(f.readline()) #读取第一行,读完后指针指向下一行
#print(f.readline()) #打印的是第二行。readline()自带换行符,print也自动换行,所以一共换了两行
#print(f.readlines()) #f.readlines()读取的是包含所有行的一个列表,每个元素都带换行符
#for i in f.readlines(): #用for循环打印f.readlines()列表,打印时会自动识别换行符
# print(i)
#for i in f.readlines():
# print(i.strip()) #strip的功能是去掉换行符
number=0
for i in f.readlines():
number+=1
if number==5:
i=‘‘.join([i.strip(),‘奈何‘]) #用join进行字符串拼接,给第5行加内容
print(i.strip())
f=open(‘小重山‘,‘r‘,encoding=‘utf8‘)
for i in f: #f.readlines()是将f对象读取为列表放入内存;而此处for循环以"迭代器"去读取,i指向谁,谁占内存
print(i.strip()) #当下一个要进入内存时,上一个已经不占内存了,要比f.readlines()省内存,更优
f.close()
#对某一行操作:
f=open(‘小重山‘,‘r‘,encoding=‘utf8‘)
number=0
for i in f:
number+=1
if number==5:
i=‘‘.join([i.strip(),‘奈何‘]) #用join进行字符串拼接,给第5行加内容
print(i.strip())
f.close()
f=open(‘小重山‘,‘r‘,encoding=‘utf8‘)
print(f.tell()) #识别光标的位置,起始位置是0
print(f.read(2)) #读两个字符
print(f.tell()) #一个汉字占三个字节,光标一次走一个字节,所以指到6
f.seek(3) #调整光标位置,很重要
print(f.read(4))
f.close()
3.flush及其他模式
import time
f=open(‘文件2号‘,‘w‘,encoding=‘utf8‘)
f.write(‘apple ‘)
f.write(‘hello‘)
f.flush() #flush实现写完后立即存入磁盘文件,如果没有flush,程序执行完后才会写入
time.sleep(3)
f.close()
import time
for i in range(30):
print(‘*‘,end=‘‘)
time.sleep(0.02)
print(‘ ‘)
import time
for i in range(30):
print(‘*‘,end=‘‘,flush=True) #与上一段代码相比,flush实现了动态输出功能
time.sleep(0.1)
f=open(‘文件2号‘,‘a‘,encoding=‘utf8‘)
f.truncate(3) #从第三个位置以后截断,只保留前面的内容
f=open(‘文件3号‘,‘r+‘,encoding=‘utf8‘)
print(f.read()) #读写模式,可读可写,写在最后
f.write(‘你好‘)
f.close()
f=open(‘文件3号‘,‘w+‘,encoding=‘utf8‘)
f.write(‘abcdefg‘) #写读模式,写前会格式化
f.seek(0) #写完后光标在最后,所以读不到内容,需要调整光标位置
print(f.readline())
f.close()
f=open(‘文件3号‘,‘a+‘,encoding=‘utf8‘)
f.write(‘water‘)
f.seek(0) #添加完后光标在最后,所以读不到内容,需要调整光标位置
print(f.readline())
f.close()
4.文件修改
f_read=open(‘小重山‘,‘r‘,encoding=‘utf8‘)
f_write=open(‘小重山2‘,‘w‘,encoding=‘utf8‘)
number=0
for i in f_read:
number+=1
if number==5:
i=‘hello 岳飞 ‘ #完全替换
elif number==6:
i=‘‘.join([i.strip(),‘奈何 ‘]) #增加内容
f_write.write(i)
f_read.close()
f_write.close()
5.with方法
with open(‘小重山‘,‘r‘) as f: #等价于f=open(‘小重山‘,‘r‘),退出with语句就关闭了文件,不需要close
f.read()
print(‘jjj‘)
#with同时管理多个文件对象:
with open(‘文件1‘,‘r‘) as f1,open(‘文件2‘,‘w‘) as f2:
以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章