如何使用 python 和 os 合并特定文件夹中的所有 csv 文件

How to merge all csv files in a specific folder using python and os

如何使用 os.

合并特定文件夹中的所有 csv 文件

所以下面的代码完成了工作,但它将所有文件连接到脚本所在的同一目录中。

如何在不同的文件夹中使用它?

我的代码:

import os
import pandas as pd
import numpy as np



def get_df():
    df=pd.DataFrame()
    for file in os.listdir():
        if file.endswith('.csv'):
            aux=pd.read_csv(file, error_bad_lines=False)
            df=df.append(aux)
    return df


df=get_df()


df.to_csv(f"file_name.csv")

我尝试添加文件夹名称,但没有找到文件。

for file in os.listdir('My_folder_name\'):

我在 os 模块文档中找到了更改目录 os.chdir("C:\Users\Desktop\my_folder_name\my_new_folder_name").

的代码

https://www.tutorialsteacher.com/python/os-module

所以我只是在循环之前添加了这一行,现在它起作用了!!

def get_df():
    df=pd.DataFrame()
    os.chdir("C:\Users\Desktop\my_folder_name\my_new_folder_name")
    for file in os.listdir():
        if file.endswith('.csv'):
            aux=pd.read_csv(file, error_bad_lines=False)
            df=df.append(aux)
    return df


df=get_df()

df.to_csv(f"file_name.csv")

有多种方法可以解决它,具体取决于要执行的合并类型。

考虑到您的具体要求(Pythonos),并假设想要 concat 文件,以下将完成工作(包括具有相同 concat 的文件) =28=])

import os

os.system("awk '(NR == 1) || (FNR > 1)' file*.csv > merged.csv")

其中NRFNR表示正在处理的行号。

FNR 是每个文件中的当前行。

NR == 1 包括第一个文件的第一行 (header),而 (FNR > 1) 跳过每个后续文件的第一行。