目录
简介
Python 文件操作是指在 Python 中打开、读写和关闭文件的过程,是进行文件 IO 操作的必要手段之一。
文件 IO 是计算机编程中常用的操作之一,我们可以通过文件 IO 实现读取数据、保存数据、备份数据等功能。在 Python 中,可以使用内置的 open() 函数来打开一个文件,并返回一个文件对象。
1.文件的编码
文件编码指的是将文本数据转换为字节数据(或二进制数据)时使用的字符集编码方式。由于不同的字符集可以用不同的编码方式表示相同的文本内容,所以正确的文件编码对于文件的读取和处理非常重要。
Python 默认的文件编码方式是 ASCII 编码,但是在实际应用场景中,我们通常需要处理包含中文等非 ASCII 字符的文件,因此需要指定适当的文件编码方式,以保证文件能够被正确地读取或写入。常见的文件编码方式有以下几种:
(1)UTF-8
UTF-8 是一种针对 Unicode 的可变长度字符编码方式,支持所有的 Unicode 字符,并且在互联网上广泛使用。在 Python 中使用 UTF-8 编码方式读写文件时,应该使用 "utf-8" 或 "utf8" 作为编码格式。
例如,在使用 open() 函数打开一个 UTF-8 编码的文件时,应该这样写:
file = open("test.txt", encoding="utf-8")
(2)GBK
GBK 是国家标准 GB2312-1980 的扩展版本,它是一种对中文优化的字符编码方式,在中国大陆广泛使用。在 Python 中使用 GBK 编码方式读写文件时,应该使用 "gbk" 作为编码格式。
例如,在使用 open() 函数打开一个 GBK 编码的文件时,应该这样写:
file = open("test.txt", encoding="gbk")
(3)其他编码方式
除了 UTF-8 和 GBK 之外,还有一些其他的编码方式也被广泛使用,比如 Big5(繁体中文)、Shift-JIS(日语)、EUC-KR(朝鲜语)等。在 Python 中使用其他编码方式读写文件时,需要根据具体情况指定相应的字符集编码方式。
总之,在进行文件操作时,不同的文件应该选用适合自己的编码方式,并且在读写文件时要指定正确的编码格式,以避免因编码问题而产生的错误。
2.文件的读取
在 Python 中,使用内置的 open() 函数可以打开一个文件并返回一个文件对象,然后通过调用文件对象的方法来读取文件内容。常用的文件读取方式有以下几种:
(1)逐行读取
最基本的文件读取方式是逐行读取,即一次读取文件的一行内容。使用文件对象的 readline() 方法可以实现逐行读取文件。
例如,下面的代码演示了如何逐行读取一个名为 "test.txt" 的文本文件,并将每一行打印出来:
with open("test.txt", "r") as f:
line = f.readline()
while line:
print(line.strip()) # 去除行尾的换行符
line = f.readline()
(2)读取所有内容
使用文件对象的 read() 方法可以读取文件的全部内容,返回一个字符串。如果文件比较大,这种读取方式可能会导致内存不足,因此应该谨慎使用。
例如,下面的代码演示了如何读取一个名为 "test.txt" 的文本文件的全部内容:
with open("test.txt", "r") as f:
content = f.read()
print(content)
(3)读取所有行
使用文件对象的 readlines() 方法可以读取文件的所有行,并返回一个包含每一行的字符串列表。
例如,下面的代码演示了如何读取一个名为 "test.txt" 的文本文件的所有行:
with open("test.txt", "r") as f:
lines = f.readlines()
for line in lines:
print(line.strip()) # 去除行尾的换行符
需要注意的是,在使用 open() 函数打开文件时,可以通过第二个参数指定打开文件的模式,常用的模式有:"r"(只读模式)、"w"(写入模式)、"a"(追加模式)等。如果省略模式参数,默认为只读模式。
3.文件的写入
在Python中,可以使用内置的open()
函数来创建、读取和写入文件。open()
函数需要两个参数:要打开的文件名和文件模式(读取、写入或追加)。文件模式是一个包含字母的字符串,通常包括以下选项:
- 'r': 读取(默认)
- 'w': 写入(会覆盖原来的内容)
- 'a': 追加
例如,要创建一个新的文本文件并写入一些文本,可以使用以下代码:
with open("myfile.txt", "w") as file:
file.write("Hello, world!")
这将创建一个名为“myfile.txt”的新文件,并在其中写入字符串“Hello, world!”。
如果要向现有文件中添加文本,而不是覆盖原来的内容,可以使用模式"a":
with open("myfile.txt", "a") as file:
file.write("Hello again, world!")
这样做会将另一个字符串“Hello again, world!”添加到现有文件的末尾。
请注意,在本例中使用了with
语句,它可以自动关闭文件,在处理文件时非常安全和方便。
4.文件的追加
要向文件中追加内容而不覆盖原有内容,可以使用文件模式"a"。具体地说,可以使用内置的open()
函数打开一个文件,并将模式参数设置为"a"来实现这个目标。
例如,假设我们要打开一个名为“myfile.txt”的文件并追加一些文本,可以使用以下代码:
with open("myfile.txt", "a") as file:
file.write("This text will be appended to the file")
这样做会将字符串“ This text will be appended to the file”添加到现有文件的末尾,而不会删除任何现有内容。另外,与使用"w"模式不同,使用"a"模式打开文件时,如果文件不存在,则会创建一个新文件。
请注意,在本例中使用了with
语句,它可以自动关闭文件,在处理文件时非常安全和方便。
5.文件的操作合集
(1)创建和写入文件
使用open()打开一个新文件,并使用模式参数"w"(写)来指示将覆盖现有文件或创建新文件。然后使用write()方法向文件写入文本。
with open('myfile.txt', mode='w') as file:
file.write('Hello, world!')
(2)读取文件
使用open()打开一个已经存在的文件,并使用模式参数“r”(可读)来指示读取文件。然后使用read()方法读取整个文件。
with open('myfile.txt', mode='r') as file:
text = file.read()
print(text)
这将打印出刚才写入文件的字符串:“ Hello, world!”。
(3)追加到文件
使用open()打开一个现有的文件,并使用模式参数“a”(添加)来指示追加到文件末尾。然后使用write()方法向文件写入附加的文本。
with open('myfile.txt', mode='a') as file:
file.write('\nThis text is appended.')
这将在原有的文本“Hello, world!”下面添加一行新文本“ This text is appended.”.
(4)遍历文件内容
使用open()打开一个文件并使用模式参数“r”(可读)来读取文件。然后使用for循环遍历文件中的每一行。
with open('myfile.txt', mode='r') as file:
for line in file:
print(line)
这将逐行打印出文件内容,包括刚才写入的“ Hello, world!”和追加的“This text is appended.”。
(5)使用csv文件格式
首先需要导入内置模块csv,然后可以使用open()函数打开一个.csv文件并将其作为csv.reader对象使用。
import csv
# Open the CSV with a context manager
with open('mydata.csv') as file:
# Create the CSV reader object
reader = csv.reader(file)
# Iterate through each row in the CSV
for row in reader:
print(row)
这将读取名为“mydata.csv”的文件,并打印出其中每一行作为一个列表。如果该文件包含如下所示的内容:
Name,Age,Gender
John,25,Male
Emily,32,Female
'''则执行以上代码会输出:
['Name', 'Age', 'Gender']
['John', '25', 'Male']
['Emily', '32', 'Female']
'''
这些示例提供了Python中文件操作常见用法的简要概述。需要注意的是,在每个文件操作结束时,最好使用with语句来关闭文件,以确保数据被正确地保存到磁盘并释放资源。