python学习——文件操作

打开文件

 

f = open(文件名, 文件打开模式,文件编码)  
  1. ‘w’:只写模式,它是只能写,而不能读的。如果用’w’模式打开一个不存在的文件,则会创建新的文件开始写入;如果用’w’模式打开一个已存在的文件,则会清空文件里内容数据,重新写入新的内容。
  2. ‘r’:只读模式,它是只能读,而不能写的。如果用’r’模式,文件必须得存在,若文件不存在,会报FileNotFoundError错误。
  3. ‘a’:追加模式,它是只能写,不能读的。如果用’a’模式写,文件不存在的话,会新建文件再写入数据;如果用’a’模式写,文件存在的话,会在文件内容的末尾写入内容,不会清空原来的内容
  4. ‘w+’:可读可写模式。文件不存在,则新建;存在的话,则清空文件重新写入。’w+’重要一点是会把原来的内容清空(请慎重使用)
  5. ‘r+’:可读可写模式。重要是文件必须存在,不存在的话,打开会报错,同时写的话,则文件开头写入内容。
  6. ‘a+’:可读可写模式。文件不存在则新建;存在的话,则文件末尾追加内容。
  7. ‘rb’:读取二进制文件
  8. ‘rw’:写入二进制文件

文件的操作方法

f=open('python.txt','w+',encoding='utf-8')#打开文件
#python2 打开文件除了open()方法,还有一种file()方法:f = file('a.txt','r'),python3没有这个file()方法。

f.writable()#判断文件是否可写

f.readable()#判断文件是否可读

f.write('天气真好!'+'\n')#写文件,写字符串到文件里

f.writelines(['搏击'+'\n','打篮球'+'\n'])#写文件,写列表到文件里

f.read()#读文件的所有内容,返回的是字符串

f.readlines()#读文件所有的内容,返回的是列表

f.readline()#读一行内容,返回的是字符串 

f.tell()#返回文件的当前指针位置 

f.truncate()#清空文件内容 

f.seek(0)#移动文件指针的执行,传0是代表把文件指针指向文件开头 

f.flush()#让write()后,f.flush()把内存里的数据立马写入到磁盘里,使得写完就生效;
#而实际的write()写有缓存时间,无法立即写入 

f.close()#关闭文件 

读文件

文件操作方法read(),readlines()的读文件,会把所有数据加载到内存,当读入较大文件时,则内存会会不够,所以这两种方法既不安全而且效率不高。所以可以读一行,释放一行。

f = open('python.txt','r',encoding='utf-8')
for line in f:            #line是文件每行的内容
    print(line)
f.close()

修改文件

修改文件可以采用两种方法:1.读取文件所有内容,把原文件清空,重新写入新的内容  2.修改后的内容写入一个新的文件,再将新文件替换原文件。

#第一种方法,适用于文件小的情况。在不删除原文件的情况下,修改文件的内容。
f = open('python.txt','r+',encoding='utf-8')
res = f.read()
new_res = res.replace('周五周六','周末')
f.seek(0)
f.truncate()
f.write(new_res)
f.close()
#第二种方法,无论文件大小都适合。新建文件,一行行的写入替换内容,再删除旧文件,最后新文件更名成原文件名。给人一种在原文件修改内容的假象。
import os
f = open('python.txt','r+',encoding='utf-8')
f_n = open('ddd.txt','a+',encoding='utf-8')
for line in f:
    new_line =line.replace('美女','帅哥')
    f_n.write(new_line)
f.close()
f_n.close()
os.remove('python.txt') os.rename('ddd.txt','python.txt')

多文件操作

使用with方法,在文件不使用的时候,自动关闭该文件,而不需要自己写close()。当同时打开多个文件时,使之不会产生错误。

with open("file.txt","r",encoding='utf-8') as fr,\
        open("file_new.txt","a+",encoding='utf-8') as fa:#虽然python编码规范要求每行代码不超过80个字符,但是为了方便阅读,可以加上"\",让代码换行。

 

转载于:https://www.cnblogs.com/HuNanHank/p/9602825.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值