os.walk认为我的目录只包含.DS_Store文件

时间:2016-03-23 01:52:53

标签: python os.walk

这令人困惑!出于某种原因,os.walk告诉我,我所拥有的只是一个充满.DS_Store个文件的文件结构,但事实并非如此。

alist = []

for root, directories, filenames in os.walk('/somedir/full/of/subdirs/and_PDFs'):
    somelist.append(os.path.join(root,filename))

所以,alist[0:5]给了我一个样本:

['.DS_Store',
 '/somedir/full/of/subdirs/and_PDFs/0008/.DS_Store',
 '/somedir/full/of/subdirs/and_PDFs/0008/18/.DS_Store',
 '/somedir/full/of/subdirs/and_PDFs/0027/.DS_Store',
 '/somedir/full/of/subdirs/and_PDFs/0027/41/.DS_Store']

我不知道为什么os.walk认为我所有的文件都是.DS_Store

(我还应补充一点,整个alist充满了这些,而不仅仅是前5个。)

1 个答案:

答案 0 :(得分:4)

代码正在使用filename(可能在代码中的某处定义),而不是filenames。你需要迭代filenames来获取文件(如果你也想要目录名,也需要迭代directories

alist = []

for root, directories, filenames in os.walk('/somedir/full/of/subdirs/and_PDFs'):
    for fn in filenames:
        alist.append(os.path.join(root,fn))