文件操作

一、打开文件

1、f = open('text','w',enconding = 'utf-8')

  f.close()

2、with open('text','w',enconding = 'utf-8') as f:

    pass

1、2功能一样,不过推荐使用2,不需要自己关闭文件。

二、各种模式详解

1、基本模式

  'r' :只读,如果文件不存在,会报错

  'w':只写,如果文件存在,则清空文件后开始写。文件不存在,创建文件

  'a' :只写,在文件尾追加,如果文件不存在,创建文件

  'b' :二进制模式

  + :更新读写模式(如只有读模式,加+号可以变成读写模式),可以与a,w,r拼接。

2、组合模式

  'r+':读写模式,如果文件不存在,会报错。先写再读,在文件开头写,会覆盖之前的内容。先读后写,则在文件尾写

  'w+':写读模式,如果文件存在,则清空文件后开始写读,文件不存在,创建文件。先写后读,如果需要读,默认在文件尾,需把光标(用seek函数)移动到要读的位置

  'a+':追加读写模式,如果文件存在,则追加模式读写,文件不存在,创建文件。在文件尾写,如果需要读,默认在文件尾,需把光标(用seek函数)移动到要读的位置

---------以二进制模式读写,同上面的操作,不能加编码模式--------------

  'r+b':二进制读写

  'a+b':二进制追加读写

  'w+b':二进制写读

三、读写文件操作

1、f.read() 读取整个文件的内容

2、f.readline()读取一行

3、f.readlines()读取所有行,并以列表形式返回

4、利用for循环,with open('text','r',enconding = 'utf-8') as f:

          for line in f:

            print(line)      #循环打印行

5、f.tell()得到光标目前所在位置

6、f.seek(offset[,whence])             

将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,

whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。其中1和2只能以二进制模式打开时才有用

7、f.flush()  将缓冲区内容写进硬盘

8、f.isatty() 文件是否是一个终端设备文件(unix系统中的)

9、f.truncate([size])                   把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

10、writelines(seq)            #把seq的内容全部写到文件中(多行一次性写入)。如f.writelines(['123','abc']),注意列表中的元素只能是字符串。

11、f.fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。

三、当你对文件内容进行添加,修改,删除,文件并不会自动前移或者后移,你只能把文件读出来再进行相应的操作(边读边写或者把文件都读出来再写),下面来个修改文件中'测试' - >'验证测试'

with open('text3','r',encoding='utf-8') as f,
open('text4','w',encoding='utf-8') as f1:
for line in f:
if '测试' in line:
line = line.replace('测试','验证测试')
f1.write(line)
原文地址:https://www.cnblogs.com/zj-luxj/p/6826710.html