python - 捕获主目录中所有子文件夹中的所有 csv 文件 - Python 3.x

标签 python python-3.x pandas csv glob

下面的代码用于根据给定的时间值拆分 csv 文件。问题是此代码不会捕获所有 csv 文件。例如,在 TT1 文件夹内有几个子文件夹。这些子文件夹内有文件夹。在这些子子文件夹中,有 csv 文件。当我将路径指定为 path='/root/Desktop/TT1 时,它不会处理这些子子文件夹中的所有文件。请问我该如何解决这个问题。

在 @Serafeim 的回答( https://stackoverflow.com/a/57110519/5025009 )之后,我尝试了这个:

import pandas as pd
import numpy as np
import glob
import os

path = '/root/Desktop/TT1/'
mystep = 0.4

#define the function
def data_splitter(df, name):
    max_time = df['Time'].max() # get max value of Time for the current csv file (df)
    myrange= np.arange(0, max_time, mystep) # build the threshold range
    for k in range(len(myrange)):
        # build the upper values 
        temp = df[(df['Time'] >= myrange[k]) & (df['Time'] < myrange[k] + mystep)]
        temp.to_csv("/root/Desktop/T1/{}_{}.csv".format(name, k))

for filename in glob.glob(os.path.join(path, '*.csv')):
    df = pd.read_csv(filename)
    name = os.path.split(filename)[1] # get the name of the file
    data_splitter(df, name)

最佳答案

您可以自动获取所有子文件夹并更改路径: 如果所有子文件夹都以“Sub”开头:

import pandas as pd
import numpy as np
import glob
import os

path = '/root/Desktop/TT1/'
mystep = 0.4

#define the function
def data_splitter(df, name):
    max_time = df['Time'].max() # get max value of Time for the current csv file (df)
    myrange= np.arange(0, max_time, mystep) # build the threshold range
    for k in range(len(myrange)):
        # build the upper values 
        temp = df[(df['Time'] >= myrange[k]) & (df['Time'] < myrange[k] + mystep)]
        temp.to_csv("/root/Desktop/T1/{}_{}.csv".format(name, k))

# use os.walk(path) on the main path to get ALL subfolders inside path
for root,dirs,_ in os.walk(path):
    for d in dirs:
        path_sub = os.path.join(root,d) # this is the current subfolder
        for filename in glob.glob(os.path.join(path_sub, '*.csv')):
            df = pd.read_csv(filename)
            name = os.path.split(filename)[1] # get the name of the current csv file
            data_splitter(df, name)

关于python - 捕获主目录中所有子文件夹中的所有 csv 文件 - Python 3.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57180566/

相关文章:

python - 使用大小不匹配的python合并两个excel文件

python - 如何使用请求从网站上抓取不同职位的标题?

python - 在python中转换pandas dataframe datetime格式

python - 如何在 DataFrame 中创建和使用新函数?

python - NLTK 从 CSV 中删除停用词

python - 一种创建文件和目录而不覆盖的方法

python - pip install mysql-python 失败并出现环境错误 : mysql_config not found

python - 无法弄清楚为什么我收到 UnboundLocalError

python - 为什么我的 lambda 函数在使用像 filter() 和 map() 这样的函数时不返回任何值?

python - 解析嵌套 Pandas 数据框中的日期时间