import os
import csv
# 要读取的文件夹路径
folder_path = '/path/to/folder'
# 要读取的列的索引(0为第一列)
column_index = 2
# 存放最大值及其所在行的信息的元组
max_info = None
# 遍历文件夹中的所有CSV文件
for filename in os.listdir(folder_path):
if filename.endswith('.csv'):
file_path = os.path.join(folder_path, filename)
with open(file_path, 'r') as file:
reader = csv.reader(file)
# 跳过Header行
next(reader)
# 遍历每一行,找到最大值及其所在行
for i, row in enumerate(reader, start=1):
value = float(row[column_index])
if max_info is None or value > max_info[0]:
max_info = (value, i, filename)
# 将最大值所在行截取到新文件中
if max_info is not None:
value, row_index, filename = max_info
with open(os.path.join(folder_path, 'max_row.csv'), 'w', newline='') as file:
writer = csv.writer(file)
with open(os.path.join(folder_path, filename), 'r') as original_file:
reader = csv.reader(original_file)
# 写入Header行
writer.writerow(next(reader))
# 写入最大值所在行
for i, row in enumerate(reader, start=1):
if i == row_index:
writer.writerow(row)
break
else:
print('No CSV files found in folder or no valid values in column')
解决方案的关键步骤如下:
os.listdir()
函数遍历文件夹中的所有文件;.csv
结尾的文件,使用csv.reader()
函数读取其中的行;csv.writer()
函数将最大值所在行写入新文件。需要注意的是,为了正确处理CSV文件中的逗号等标点符号,建议使用csv
模块提供的读写函数而不是普通的文件读写函数。另外,为了避免读写文件时发生错误,建议使用with
语句来自动关闭文件。
在此,楼主恬不知耻地推荐微信公众号「Python极客思维」,公众号内会持续发布大厂各种高薪岗位,包括但不限于Python岗位(内推哦),欢迎诸位老铁切磋交流~~。