用python读取一个文件夹下的所有CSV文件里某一列数据中最大值,将此最大值所在行截取到新CSV文件中

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')

解决方案的关键步骤如下:

  1. 使用os.listdir()函数遍历文件夹中的所有文件;
  2. 对于每个以.csv结尾的文件,使用csv.reader()函数读取其中的行;
  3. 遍历每一行,找到指定列中的最大值及其所在行号;
  4. 使用csv.writer()函数将最大值所在行写入新文件。

需要注意的是,为了正确处理CSV文件中的逗号等标点符号,建议使用csv模块提供的读写函数而不是普通的文件读写函数。另外,为了避免读写文件时发生错误,建议使用with语句来自动关闭文件。

在此,楼主恬不知耻地推荐微信公众号「Python极客思维」,公众号内会持续发布大厂各种高薪岗位,包括但不限于Python岗位(内推哦),欢迎诸位老铁切磋交流~~。

你可能感兴趣的:(python,数学建模,开发语言)