如何只获取目录中的文件?

时间:2014-01-27 15:06:20

标签: python file python-2.7

我有这段代码:

allFiles = os.listdir(myPath)
for module in allFiles:
    if 'Module' in module: #if the word module is in the filename
        dirToScreens = os.path.join(myPath, module)    
        allSreens = os.listdir(dirToScreens)

现在,一切正常,我只需更改行

allSreens = os.listdir(dirToScreens)

获取刚才文件的列表,而不是文件夹。 因此,当我使用

allScreens  [ f for f in os.listdir(dirToScreens) if os.isfile(join(dirToScreens, f)) ]

它说

module object has no attribute isfile

注意:我使用的是 Python 2.7

2 个答案:

答案 0 :(得分:39)

您可以使用os.path.isfile方法:

import os
from os import path
files = [f for f in os.listdir(dirToScreens) if path.isfile(f)]

或者如果你觉得有用:D

files = filter(path.isfile, os.listdir(dirToScreens))

答案 1 :(得分:7)

“如果您需要一个文件列表,所有文件名都有一定的扩展名,前缀或中间的任何常用字符串,请使用glob而不是自己编写代码来扫描目录内容”

import os
import glob

[name for name in glob.glob(os.path.join(path,'*.*')) if os.path.isfile(os.path.join(path,name))]