【问题标题】:python how to access all the files that are in different folderspython如何访问不同文件夹中的所有文件
【发布时间】:2017-11-22 16:04:23
【问题描述】:

我目前正在访问我定义的路径中的 xls 文件:

path = os.chdir('C:\\Users\\BKS\\Desktop\\python\\pk list')
files = os.listdir(path)
files_xls = [f for f in files if f[-3:] == 'xls']

df = [pd.read_excel(f, 'Sheet1')[['Exp. m/z','Intensity']] for f in files_xls]

然后我想,如果 xls 文件被组织在不同的文件夹中呢?有没有办法让 files_xls 循环到文件夹中的每个文件?这意味着,访问文件夹,然后遍历每个文件,然后转到下一个文件夹,然后做同样的事情?

我希望获取每个 xls 文件所在文件夹的名称,并将它们合并到 df 中,如下所示:

Tag1  Tag2   Tag
1     1      A01.xls
2     1      A02.xls
3     2      A03.xls
4     2      A04.xls
5     3      A05.xls

这些 xls 文件将在一个文件夹中:

'C:\\Users\\BKS\\Desktop\\python\\pk list\\20170620 Sample 1-48'

其他一些 xls 文件将在另一个文件夹中:

'C:\\Users\\BKS\\Desktop\\python\\pk list\\20170620 Sample 49-96'

这些文件夹可能包含同名的 xls 文件,但其中包含不同的数据。所以我的目标是按顺序遍历pk list文件夹中的所有文件,并将20170620 Sample 1-48等文件夹的名称合并到df中。假设对于上表,这两个文件夹有 A01 ~ A05.xls:

Tag1  Tag2  Folder Name             Tag
1     1     20170620 Sample 1-48    A01.xls
2     1     20170620 Sample 1-48    A02.xls
3     2     20170620 Sample 1-48    A03.xls
4     2     20170620 Sample 1-48    A04.xls
5     3     20170620 Sample 1-48    A05.xls
1     1     20170620 Sample 49-96   A01.xls
2     1     20170620 Sample 49-96   A02.xls
3     2     20170620 Sample 49-96   A03.xls
4     2     20170620 Sample 49-96   A04.xls
5     3     20170620 Sample 49-96   A05.xls

【问题讨论】:

  • 熟悉os.walk函数。

标签: python pandas dataframe operating-system


【解决方案1】:

您可以 import glob 并使用它:
(这严格假设您在 pk list 文件夹下只有子文件夹,没有文件。此外,第一个子文件夹中存在的所有文件都必须存在于另一个子文件夹中子文件夹)

import glob
import os

os.chdir("C:\\Users\\BKS\\Desktop\\python\\pk list\\20170620 Sample 1-48")
filenames = glob.glob("*.xls")
os.chdir("C:\\Users\\BKS\\Desktop\\python\\pk list")
foldernames = glob.glob("*")

for filename in filenames:
    df = []
    for foldername in foldernames:
        # merge according to your requirement
        df.append(pd.read_excel(f, 'Sheet1')[['Exp. m/z','Intensity']])
    # Use merged 'df' here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多