关于python:如何只获取目录中的文件?

How to get only files in directory?

本问题已经有最佳答案,请猛点这里访问。

我有这样的代码:

1
2
3
4
5
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)

现在,一切正常,我只需要改变线路

1
allSreens = os.listdir(dirToScreens)

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

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

它说

1
module object has no attribute isfile

注意:我使用的是Python 2.7


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

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

或者如果你觉得功能正常:D

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


"如果您需要一个文件名列表,其中所有文件名都具有特定的扩展名、前缀或中间的任何公共字符串,那么使用glob而不是自己编写代码来扫描目录内容。"

1
2
3
4
import os
import glob

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