【问题标题】:Python: Copy identical .csv files from various folders (each folder has one .csv file) into a single folderPython:将相同的 .csv 文件从各个文件夹(每个文件夹都有一个 .csv 文件)复制到一个文件夹中
【发布时间】:2021-05-27 02:35:15
【问题描述】:

文件系统在我的问题中设计如下:

Main folder -> sub-folder -> data.csv

这里,Main folder 有几个子文件夹,其中每个 sub-folder 有一个 data.csv 文件(请注意,每个子文件夹中的 .csv 文件具有与 data.csv 相同的文件名)。对于数据处理,我需要将所有 .csv 文件放在一个文件夹中,以便我可以使用以下代码(以下代码在我手动复制和重命名时有效(因为所有 .csv 文件具有相同的名称)每个 @ 987654329@ 文件从子文件夹到单个文件夹)。在重命名.csv文件时,我使用了子文件夹的名称,例如:如果一个子文件夹命名为a1,我将这个子文件夹中的.csv文件重命名为a1.csv

import pandas as pd
import csv
import glob
import os

path = r'C:\Santobedi' # file path to the folder that contains manually copied and uniquely named .csv files
all_files = glob.glob(path + "/*.csv")
print(all_files)

for file in all_files:
    file_name = os.path.split(file)[-1]
    file_name_path = os.path.join('C:\Santobedi\CNN' + file_name)
    transpose_df = pd.read_csv(file).T
    transpose_df.to_csv(file_name_path)

手动复制和重命名大文件很烦人。我想一次性完成。我怎样才能用 Python(熊猫)做到这一点?

【问题讨论】:

  • 为什么要使用 pandas 来读/写而不是使用 shutil.copy()shuti.move()?您在此处发布的代码有什么问题?
  • 顺便说一句,不要在 Windows 路径中使用反斜杠 - 使用原始字符串或正斜杠
  • @buran 代码没有问题。我提到了解释我的问题的代码。我试过shutil.copy(source, destination),但它仍然没有帮助,因为我需要遍历几个子文件夹并在复制到单个文件夹之前或之后重命名 .csv 文件。

标签: python pandas csv


【解决方案1】:
import os
import shutil
MAIN_FOLDER = 'main_folder'
for item in os.listdir(MAIN_FOLDER):
    if os.path.isdir(os.path.join(MAIN_FOLDER, item)):
        source = os.path.join(MAIN_FOLDER, item, 'data.csv')
        destination = os.path.join(MAIN_FOLDER, f'{item}.csv')
        shutil.move(source, destination)

【讨论】:

  • 如何在移动到目标之前从源转置 .csv 文件?就我而言,目标必须包含来自源的转置 .csv 文件。
  • 在这种情况下使用 pandas 阅读,转置 df 并保存为 csv
  • 我采用了相同的方法,但出现以下错误:pandas.errors.ParserError: Error tokenizing data. C error: Expected 257 fields in line 12, saw 338
  • 在第 12 行检查您的数据 - 可能您在该行有额外的 sep(逗号)。可能您需要指定quotechar?如果没有看到您的代码和示例数据,很难判断。也许问单独的问题,因为这与你原来的问题无关。
猜你喜欢
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 2022-08-04
  • 2023-01-14
  • 2015-04-27
  • 1970-01-01
相关资源
最近更新 更多