python之文件操作

python对文件的操作分三步:

  1.打开文件获取文件的句柄,

  2.通过文件句柄操作文件,

  3.关闭文件,

A.文件基本操作:

f = open('file.txt','r')#以只读的方式打开一个文件,获取文件句柄,如果只是读的话,r可以省略不写,默认就是只读的状态。

在python2中,还有file()方法可以打开,python3中file()方法已经取消,只有open()方法。

first_line = f.readline()#获取文件的第一行内容,返回一个list.

print(first_line)#打印第一行的内容

res = f.read()#获取除了第一行剩下的所有文件内容

print(res)

f.close()#关闭文件

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

打开文件的模式有:

  r:只读模式(默认)

  w:只写模式【不可读,不存在则创建,存在则删除内容】

  a:追加模式【不可读,不存在则创建,存在则只追加内容】

“”+“”表示可以同时读写某个文件,

  r+:【可读,可写,可追加,如果打开的文件不存在的话,会报错】

  w+:【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】

  a+:【追加读写模式,不存在则创建;存在则只追加内容】

“U”表示在读取时,可以将 自动转换成 (r与r+使用方式一样)

  rU

  r+U

"b"表示处理二进制文件(linux可以忽略,windows需要备注),例如:rb、wb、ab

文件操作方法:

f = open('file.txt','r+',encoding='utf-8')#以utf-8编码读取文件

f.readline()#读取一行

f.read()#读取文件中所有内容,大文件时不要用,因为会把整个文件内容读取放到内存中,内存不够用的话,内存会溢出,电脑死机

f.readlines()#读取文件所有内容,返回一个list,元素是每行的数据,大文件时不要使用

f.tell()#获取当前文件的指针指向

f.seek(0)#把当前文件指向指定的位置

f.write('谩语')#写入内容

f.writelines(['谩语',‘夜归’])#将一个列表写入文件中

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

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

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

f.fulsh()#写入文件后,立即从内存中把数据写入磁盘

f.close()#关闭文件

备注:大文件时候,读取文件的快速操作方法

用上面的read()和readline()方法操作文件的话,会先把文件所有内容读取到内存中,这样的话,数据太多,电脑会非常卡。高效快速的方法是,读取一行操作一行,操作过的内容就直接从内存中释放了,其代码如下:

f = open('file.txt','r+‘)

  for  line in f:

    print(line)

这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存

with使用方法:

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

with open('file.tsst','r') as 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('谩语',‘夜归’)

  fr.write(new_res)

第二种:

with open('file.txt') as fr, open('file_new','w') as fw:#这个是多文件操作,打开两个文件,fr是读file.txt文件,fw是新建一个file_bak文件

  for line in fr:#循环file.txt每一行

    new_line = line.replace('谩语',‘夜归’)

    fw.wirte(new_line)#写到file_bak文件中

人生的旅途,前途很远,也很暗。然而不要怕,不怕的人的面前才有路。
原文地址:https://www.cnblogs.com/ymany/p/8696539.html