【问题标题】:Output subdirectories to pandas .csv using glob使用 glob 将子目录输出到 pandas .csv
【发布时间】:2021-04-12 00:37:11
【问题描述】:

我正在运行一个例程,它打开一个目录及其所有子目录,执行一些任务,然后使用 pandas 输出到 .csv。但是,我需要建立子目录名称,所以它也可以输出到.csv。

访问单个子目录,我可以这样做:

path = r'/users/directory/sub-directory'
dataframe['sub-directory'] = os.path.basename(path)
print (dataframe)

A B C sub-directory
1 2 3 Folder-1
4 5 6 Folder-1
7 8 9 Folder-1

并且子目录很容易与os.path.basename(path) 关联。但是,我想遍历使用 Glob 工作的目录,但是在输出到 .csv 时我丢失了子目录名称:

path = r'/users/directory/*/' #Using Glob
dataframe['sub-directory'] = os.path.basename(path)
print (dataframe)

#Actual Output
A B C sub-directory
1 2 3 NaN
4 5 6 NaN
7 8 9 NaN
1 2 3 NaN
4 5 6 NaN
7 8 9 NaN

#Desired Output
A B C sub-directory
1 2 3 Folder-1
4 5 6 Folder-1
7 8 9 Folder-1
1 2 3 Folder-2
4 5 6 Folder-3
7 8 9 Folder 4

我在这里看到了这个答案:Getting a list of all subdirectories in the current directory,但不知道如何将它整合到我的日常生活中。

【问题讨论】:

    标签: python pandas csv glob subdirectory


    【解决方案1】:

    尝试:

    import glob
    
    path = glob.glob(r'/users/directory/*')
    dataframe['sub-directory']=[os.path.basename(i) for i in path]
    

    【讨论】:

    • 不,它会抛出“ValueError:值的长度与索引的长度不匹配”
    • @SachinReddy 确保数据框的初始化正确
    • 不确定这是正确的方法。 Print ([os.path.basename(i) for i in path]) 给出:['u','s','e','r','s','','d','i' ... 等等]。它没有获得单独的子目录/文件夹名称
    • @SachinReddy 我已经编辑了我的答案,检查一次
    • 我仍然对文件夹结构感到困惑,请澄清
    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 2017-07-08
    • 2017-04-15
    • 1970-01-01
    • 2016-09-01
    • 2018-09-28
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多