木子随记 - TXT
type: channel
link: https://www.liccoo.com/tag/TXT/
items: Python txt文件操作

Python txt文件操作
type: item
date: 2022-11-01T10:09:54+08:00
description: Python笔记-txt文件1.读取文件Python 提供了如下 3 种函数，它们都可以帮我们实现读取文件中数据的操作：read() 函数：逐个字节或者字符读取文件中的内容；readline() 函数：逐行读取文件中的内容；readlines() 函数：一次性读取文件中多行内容。1.1read()函数对于借助 open() 函数，并以可读模式（包括 r、r+、rb、rb+）打开的文件（r代表可读模式，b代表以二进制格式打开），可以调用 read() 函数逐个字节（或者逐个字符）读取文件中的内容。如果文件是以文本模式（非二进制模式）打开的，则 read() 函数会逐个字符进行读取；反之，如果文件以二进制模式打开，则 read() 函数会逐个字节进行读取。read() 函数的基本语法格式如下：file.read([size])其中，file 表示已打开的文件对象；size 作为一个可选参数，用于指定一次最多可读取的字符（字节）个数，如果省略，则默认一次性读取所有内容。（size 表示的是一次最多可读取的字符（或字节）数，因此，即便设置的 size 大于文件中存储的字符（字节）数，read() 函数也不会报错，它只会读取文件中所有的数据。）举个例子，首先创建一个名为 draft.txt 的文本文件，其内容为：学习如何读取TXT文件 第二行 第三行然后在和 draft.txt 同目录下，创建一个 file.py 文件，并编写如下语句：# 以 utf-8 的编码格式打开指定文件 f = open('draft.txt', 'r', encoding='utf-8') # 输出读到的数据 print(f.read()) # 关闭文件 f.close()程序执行结果为：学习如何读取TXT文件 第二行 第三行注意，当操作文件结束后，必须调用 close() 函数手动将打开的文件进行关闭，这样可以避免程序发生不必要的错误。1.2readline()函数readline() 函数用于读取文件中的一行，包含最后的换行符“n”。此函数的基本语法格式为：file.readline([size])其中，file 为打开的文件对象；size 为可选参数，用于指定读取每一行时，一次最多读取的字符（字节）数。和 read() 函数一样，此函数成功读取文件数据的前提是，使用 open() 函数指定打开文件的模式必须为可读模式（包括 r、rb、r+、rb+ 4 种）。# 以 utf-8 的编码格式打开指定文件 f = open('draft.txt', 'r', encoding='utf-8') # 输出读取的一行数据 print(f.readline()) # 关闭文件 f.close()程序的执行结果：学习如何读取TXT文件由于 readline() 函数在读取文件中一行的内容时，会读取最后的换行符“n”，再加上 print() 函数输出内容时默认会换行，所以输出结果中会看到多出了一个空行。1.3readlines()函数readlines() 函数用于读取文件中的所有行，它和调用不指定 size 参数的 read() 函数类似，只不过该函数返回是一个字符串列表，其中每个元素为文件中的一行内容。和 readline() 函数一样，readlines() 函数在读取每一行时，会连同行尾的换行符一块读取。readlines() 函数的基本语法格式如下：file.readlines()其中，file 为打开的文件对象。和 read()、readline() 函数一样，它要求打开文件的模式必须为可读模式（包括 r、rb、r+、rb+ 4 种）。# 以 utf-8 的编码格式打开指定文件 f = open('draft.txt', 'r', encoding='utf-8') # 输出读取的所有数据，结果以列表形式返回 print(f.readlines()) # 关闭文件 f.close()程序运行结果：['学习如何读取TXT文件\n', '第二行\n', '第三行\n']2.写入文件注意：一定要慎重，小心别清空原本的文件，打开 -- 写入 -- （保存）关闭，不关闭没办法保存。2.1覆盖写 --- w# 以 utf-8 的编码格式打开指定文件 f = open('draft.txt', 'w', encoding='utf-8') # 覆盖写 # 写入数据 f.write('第四行') # 关闭文件 f.close()注意：这一步需要相当慎重，因为如果编辑的文件存在的话，这一步操作会先清空这个文件再重新写入。那么如果不要清空文件再写入该如何做呢？使用r+ 模式不会先清空，但是会替换掉原先的文件。2.2替换写 --- r+# 以 utf-8 的编码格式打开指定文件 …