Python随笔:对 txt 文件进行读写,清除内容,删除操作
1.文件读写
1.1 读写文件前打开文件的两个方法
第一种**(推荐)**:通过 with open( ) as f:
来打开文件
这种方法会自动关闭文件。不用通过f.close()
来关闭文件了。
第二种:通过f = open( )
来打开文件,不过使用完文件后一定要使用f.close()
关闭文件。
1.2 写入文件内容
例子:
with open(r'test.txt','a+',encoding='utf-8') as test:
test.write('行1\n')
test.write('行2\n')
with open(r'test.txt','a+',encoding='utf-8') as test:
test.write('行1\n')
test.write('行2\n')
文件查看如下图:

可以看到成功创建了test.txt文件,并在文件写入了四句话。
解析:open(r'test.txt','a+',encoding='utf-8')
-
r’test.txt’ 是要写入文件路径名,可以使用绝对路径(使用绝对路径时要确保路径文件夹存在),
加 r 的意思可以看 Python随笔:进行读写文件时,在字符串前加 r,u,b,f 的含义
-
‘a+’ 是对文件的操作模式,'a+'模式是追加模式,+号表明可以进行读写,更多模式看下面 文件操作模式表
-
encoding=‘utf-8’ 是指明文件的编码(推荐使用)。
文件操作模式表:
- ‘r’ 读取模式(默认值)
- ‘w’ 写入模式
- ‘x’ 独占写入模式
- ‘a’ 附加模式
- ‘b’ 二进制模式(与其他模式结合使用)
- ‘t’ 文本模式(默认值,与其他模式结合使用)
- ‘+’ 读写模式(与其他模式结合使用)
推荐:当每次对文件进行读写时都要删除之前的内容,使用 'w+'
当每次读写文件都是在文件末尾增添内容,使用 'a+'
显式地指定读取模式的效果与根本不指定模式相同。写入模式让你能够写入文件,并在文件不存在时创建它。独占写入模式更进一步,在文件已存在时引发FileExistsError异常。在写入模式下打开文件时,既有内容将被删除(截断),并从文件开头处开始写入;如果要在既有文件末尾继续写入,可使用附加模式 ‘a+’。
'+‘可与其他任何模式结合起来使用,表示既可读取也可写入。例如,要打开一个文本文件进行读写,可使用’r+’。(你可能还想结合使用seek文件指针。)请注意,'r+'和’w+'之间有个重要差别:后者截断文件,而前者不会这样做。
1.3 文件读取操作
对上面写入的文件进行读取:
with open(r'test.txt','a+',encoding='utf-8') as test:
test.seek(0,0) #文件指针,(0,0)表文件开头位置,(0,1)代表当前位置,(0,2)代表文件末尾位置
#由于在 ‘a+’ 模式下,打开的文件指针是在末尾位置,所以要把指针设置为文件开头才能读取内容
print('进行全部读取')
print(test.read())
print('进行行读取')
test.seek(0, 0)#由于上面读取了一次,所以要把指针再设置为文件开头才能读取内容
print(test.readline())
print('进行一次性按行读取')
test.seek(0, 0)
print(test.readlines())
结果:
进行全部读取
行1
行2
行1
行2
进行行读取
行1
进行一次性按行读取
['行1\n', '行2\n', '行1\n', '行2\n']
解析:如上,有 3 种方式进行文件读取,read()
是以字符串方式一次性读完文件内容;readline()
是读取一行文件内容,可以指定行数,默认文件指针所在第一行,readlines()
是以列表的格式按行读取文件内容。
注:对文件进行读取时一定要注意文件指针位置。刚打开文件时:'r+'和'w+'
文件指针是文件开头,'a+'
文件指针是文件末尾。通过 seek() 指定文件指针进行多样化文件读取操作。
2. 清除文件内容
使用情况:在对文件写入内容时,在某个条件下要清除文件内容再进行写入操作时,就可以使用truncate(size)
,不用删除文件再从新创建。
我们可以使用 truncate(size)
函数来删除 txt 文件内容,size是表示从第几个字节开始清除,如果是0
时代表是删除全部内容。
例子:清除上面已经写入内容的 test.txt 文件
with open(r'test.txt','a+',encoding='utf-8') as test:
test.truncate(0)
清除后text.txt文件变空:

3. 删除文件
删除文件的代码如下:
import os
os.remove(r'test.txt')