文件操作

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:



















































































































以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

代码片段 - Golang 实现集合操作

Apollo Codegen 没有找到生成代码的操作或片段

VSCode自定义代码片段——.vue文件的模板

操作栏标签片段中的片段?