首页 > 代码库 > python学习---文件的基本操作

python学习---文件的基本操作

对文件的操作分三步:

        1、打开文件获取文件的句柄,句柄就理解为这个文件

        2、通过文件句柄操作文件

        3、关闭文件。

文件基本操作:

  •         f = open(‘file.txt‘,‘r‘) #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读,
  •         在python2中还有file方法可以打开文件,python3中file方法已经没有了,只有open        
  •         frist_line = f.readline()#获取文件的第一行内容,返回的是一个list
  •         print(frist_line)#打印第一行
  •         res = f.read()#获取除了第一行剩下的所有文件内容
  •         print(res)
  •         f.close()#关闭文件

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,后面通过此文件句柄对该文件操作,打开文件的模式有:

  •       r,只读模式(默认)。
  •   w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  •   a,追加模式。【不可读; 不存在则创建;存在则只追加内容;】

   "+" 表示可以同时读写某个文件

  •       r+,【可读、可写;可追加,如果打开的文件不存在的话,会报错】
  •       w+,【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】
  •       a+,【追加读写模式,不存在则创建;存在则只追加内容;】

  文件操作方法:

  •    f = open(‘file.txt‘,‘r+‘,encoding=‘utf-8‘)#encoding参数可以指定文件的编码
  •    f.readable()#判断文件是否可读
  •    fr.writable()#判断文件是否可写
  •    fr.encoding#打印文件的编码
  •    f.readline()#读一行
  •    f.read()#读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
  •    f.readlines()#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
  •   f.write(‘爱情证书‘)#写入内容
  •   f.writelines([‘爱情证书‘,‘孙燕姿‘])#将一个列表写入文件中
  •    f.tell()#获取当前文件的指针指向
  •    f.seek(0)#把当前文件指针指向哪
  •    f.fulsh()#写入文件后,立即从内存中把数据写到磁盘中
  •    f.truncate()#清空文件内容,从指针指向的位置开始清理
  •    f.close()  #关闭文件

大文件时,高效的操作方法:

  当操作大文件时,使用read()和readlines()方法时,会把文件所有内容先读到内存中,这样内存一多,就会非常卡。解决办法是,读取一行操作一行,这样读过的内容就从内存释放了。

  • f = open(‘file.txt‘)
  • for line in f:
  •     print(line)

with使用:

    在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:

  •     with open(‘file.txt‘,‘r‘) as f:#打开一个文件,把这个文件的句柄付给f
  •           for line in f:
  •               print(line)
  •    with open(‘file.txt‘) as fr,open(‘file_bak‘,‘w‘) as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
  •            for line in fr:#循环file.txt中的每一行
  •                fw.write(line)#写到file_bak文件中

修改文件:

    修改文件的话,有两种方式,一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中

  •     第一种
  •     with open(‘file.txt‘,‘r+‘) as fr:
  •         res = fr.read()
  •         new_res = res.replace(‘我‘,‘me‘)
  •         fr.write(new_res)
  •     第二种
  •    with open(‘file.txt‘) as fr,with open(‘file_new‘,‘w‘) as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
  •            for line in fr:#循环file.txt中的每一行
  •                new_line = line.replace(‘我‘,‘me‘)
  •                fw.write(new_line)#写到file_bak文件中 

python学习---文件的基本操作