Python在子文件夹中导入csv文件

问题描述

有没有办法导入文件夹 1 中的所有文件?每个 csv 文件都包含在一个文件夹中。下面是文件结构。

C:/downloads/folder1 > 树 /F

C:.
│   tree
│
├───2020-06
│       test1.csv
│
├───2020-07
│       test2.csv
│
├───2020-08
│       test3.csv
│
├───2020-09
│       test4.csv

我知道下面的 glob 可以获取文件夹中的所有文件。但是这可以用于子文件夹吗?

import glob
import pandas as pd

# Get a list of all the csv files
csv_files = glob.____('*.csv')

# List comprehension that loads of all the files
dfs = [pd.read_csv(____) for ____ in ____]

# List comprehension that looks at the shape of all DataFrames
print(____)

解决方法

使用 glob.glob() 方法的 recursive 关键字参数:

glob.glob('**\\*.csv',recursive=True)
,

您可以使用os.walk查找所有子文件夹并获取所需文件

这是一个代码示例

import os
import pandas as pd

path = '<Insert Path>'
file_extension = '.csv'
csv_file_list = []
for root,dirs,files in os.walk(path):
    for name in files:
        if name.endswith(file_extension):
            file_path = os.path.join(root,name)
            csv_file_list.append(file_path)

dfs = [pd.read_csv(f) for f in csv_file_list]
,

我在 Kite's 网站上找到了这个,请查看

path = "./directory/src_folder"

text_files = glob.glob(path + "/**/*.txt",recursive = True)

print(text_files)
OUTPUT
['./directory/src_folder/src_file.txt','./directory/src_folder/subdirectory/subdirectory_file.txt']