【问题标题】:Extract the csv files from the sub directory python从子目录python中提取csv文件
【发布时间】:2021-09-22 15:13:07
【问题描述】:

我有本地路径(父目录),我想只提取包含 csv 的路径并将它们保存在 csv 文件中。

到目前为止我尝试了什么?

import os

directory = os.path.join("path/to/dir","path")
for root,dirs,files in os.walk(directory): 
    for file in files: 
        if file.endswith(".csv"): 
            f=open(file, 'r')
            f.close()

这不会提取所有 csv 并保存它。我该怎么做?

【问题讨论】:

  • 您面临的问题是什么?
  • 不保存为 csv
  • 那么,您希望在 CSV 中包含什么?将所需的输出显示为文本。
  • 包含csv文件列表的文件夹路径

标签: python csv path export-to-csv


【解决方案1】:

我认为你真的不需要使用 os.walk 函数。 取而代之的是 glob 具有递归功能,可以让你得到你想要的。

from glob import glob
import csv
import os

parent_directory = "/parent/directory/"
save_file = "/save/directory/csv_of_csvs.csv"
csv_files_list = glob(pathname=parent_directory + "**/*.csv", recursive=True)
folder_list = [os.path.dirname(i) for i in csv_files_list]
folder_list = set(folder_list)

with open(save_file, 'w', newline ='') as csv_file:
    write = csv.writer(csv_file, delimiter=',')
    for i in folder_list:
        write.writerow([i])
exit()

【讨论】:

    【解决方案2】:

    如果我理解,您只想记录文件夹中 CSV 文件的路径。

    对于所有递归路径都应该这样做:

    import os
    
    directory = os.path.join("path/to/dir","path")
    
    with open("all_files.csv", "w") as f:
        for root,dirs,files in os.walk(directory): 
            for file in files: 
                if file.endswith(".csv"): 
                    f.write(f"{root}/{file}")
    

    如果您希望每个目录有一个 CSV 文件:

    for root,dirs,files in os.walk(directory): 
        with open(f"{root}/files.csv", "w") as f:
            for file in files: 
                if file.endswith(".csv"): 
                    f.write(f"{root}/{file}")
    

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 2021-01-21
      • 1970-01-01
      • 2016-01-06
      • 2016-02-03
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 2022-01-14
      相关资源
      最近更新 更多