python中的文件操作

文件的操作

文件操作时,python首先会拿到文件的句柄;

f=open('filename','w',encoding='utf8')  #写模式打开文件,拿到文件句柄;f为文件句柄
f=f.read()                     # 读文件内容
f.close()                      # 关闭文件,务必要关闭

文件打开模式:

写的时候,光标永远都在最后;
r	读模式,只读,不可写;
w	写模式,当文件写模式时,就会把原来的数据格式化,然后从0位置开始写;不可读
a	append,追加模式,只可在最后追加内容;不可读
r+  读写模式,类似a模式
w+  写读模式,也是先清空,然后写,和w模式的区别是可读。
a+  和a模式的区别的可读。默认光标位置是最后
x	create a new file and open it for writing
b	二进制模式
t	text模式(default)
+	open a disk file for updating(reading and writing)
u	universal newline mode(deprecated)

文件按行读:

f=open('filename','w',encoding='utf8') 
f=f.readline()	#从第一行开始读,每执行一次readline就往下移动一行;python中,read到哪个位置,光标就移动到了那里;再读就从光标往后读;
f.readlines()	#会把全文变成列表;每行是一个元素;
for i in f.readlines():
    print(i.strip())
#最好不要这样,因为如果文件很大,f.readlines会全部读取到内存,会搞死内存;可以这样:
for i in f:
    print(i.strip())
# 这里的for循环会 自动把 f做成一个迭代器,每循环一次,从f文件中取一次;

f.tell()     告诉我光标当前所在的位置。字符和当前字符编码有关。 f.seek(0)    光标回到0位置 f.truncate()   截断,需要在文件为a模式才有意义

终极问题:如何修改一个文件

由于磁盘存储机制,直接修改实现不了。只能先生成副本,然后想法删除旧文件,把新副本名字改回去。

f_read=open('小重山','r',encoding='utf8')
f_write = open('小重山2','w',encoding='utf8')

number=0
for line in f_read:
    number+=1
    if number==5:
        line=''.join([line.strip(),'alex\n'])
        # line='hello 岳飞\n'
    f_write.write(line)

f_read.close()
f_write.close()

因为文件中只能存储字符串,所以假如有字典要存储在文件中,需要先将字典转换为字符串;用的时候需要使用eval转换回默认类型;如:

a={'beijing':{'1':10000}}    #a为一个字典
a=str(a)                     #强转为字符串 '{'beijing':{'1':10000}}'
#这样等把a从文件中取出来时,还是字符串,不能使用字典的方法。要转回字典:
a=eval(a)

如果打开一个文件,忘记关闭了,怎么办?with方法可以解决。

f=open('log','r')     
# 等效于
with open('log','r') as f:

并且with中,可以同时打开两个文件,拿到两个文件句柄:

with open('log1','r') as f1,open('log2','w') as f2:

转载于:https://www.cnblogs.com/hacker001/p/10081736.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值