with open()
使用with open()进行.csv文件的打开。
with open(filename, mode='r', newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
header = next(reader) # 跳过表头
使用 with open() 打开文件,确保文件在使用完毕后自动关闭。
- 参数说明:
filename: 文件路径或名称。
mode=‘r’: 以只读模式打开文件。
newline=‘’: 防止在不同操作系统中出现多余的空行(适用于 CSV 文件处理)。
encoding=‘utf-8’: 指定文件编码为 UTF-8,避免因编码不一致导致的错误。
csvfile: 这是一个变量名,用于引用通过 open 函数打开的文件对象。在 with 语句块内,可以使用 csvfile 来读取文件内容或进行其他文件操作。 - reader = csv.reader(csvfile)
使用 csv.reader() 方法将文件对象转换为一个 CSV 读取器。
reader 是一个迭代器,可以通过循环逐行读取 CSV 文件的内容。
每一行会被解析为一个列表,列表中的每个元素对应 CSV 文件中的一列。 - header = next(reader) # 跳过表头
next(reader) 获取迭代器 reader 的下一行内容(即 CSV 文件的第一行)。
在这里,第一行通常是表头,将其赋值给变量 header 并跳过,以便后续代码只处理数据行。
Eg:
下面的文件,使用python with open() 进行打开。
A,B,C
1,2,3
4,5,6
7,8,9
对应代码
import csv
filename = 'example.csv'
with open(filename, mode='r', newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
header = next(reader) # 跳过表头
print(f"表头: {header}") # 输出表头
for row in reader: # 处理数据行
print(f"数据行: {row}")
result :
表头: ['A', 'B', 'C']
数据行: ['1', '2', '3']
数据行: ['4', '5', '6']
数据行: ['7', '8', '9']
with open() 写入
with open() 语句不仅可以用于读取文件,还可以用于写入文件。通过指定不同的模式(如 ‘w’、‘a’ 等)
- ‘w’: 写入模式。如果文件存在,会清空文件内容;如果文件不存在,会创建新文件。
- ‘a’: 追加模式。如果文件存在,会在文件末尾追加内容;如果文件不存在,会创建新文件。
- ‘x’: 独占创建模式。如果文件不存在,创建新文件;如果文件存在,抛出 FileExistsError 异常。
##### 写入模式,如果文件存在会清空内容
with open('example.txt', mode='w', encoding='utf-8') as file:
file.write("这是写入的内容。\n")
file.write("这是第二行内容。\n")
##### 追加模式,如果文件存在会在末尾追加内容
with open('example.txt', mode='a', encoding='utf-8') as file:
file.write("这是追加的内容。\n")
##### 独占创建模式,如果文件不存在会创建新文件
try:
with open('new_file.txt', mode='x', encoding='utf-8') as file:
file.write("这是新文件的内容。\n")
except FileExistsError:
print("文件已存在,无法创建。")
- 写入CSV文件
- 如果你需要写入CSV文件,可以使用 csv.writer。以下是示例代码:
import csv
# 数据列表
data = [
['Name', 'Age', 'City'],
['Alice', '25', 'Beijing'],
['Bob', '30', 'Shanghai']
]
# 写入CSV文件
with open('output.csv', mode='w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
for row in data:
writer.writerow(row)