如何在给定扩展名的当前目录及其子目录中创建文件列表?
你会想使用os.walk这将使这个微不足道的。
import os
asps = []
for root, dirs, files in os.walk(r'C:\web'):
for file in files:
if file.endswith('.asp'):
asps.append(file)
import os
import glob
asps = []
for root, dirs, files in os.walk('/path/to/dir'):
asps += glob.glob(os.path.join(root, '*.asp'))
import fnmatch
for root, dirs, files in os.walk('/path/to/dir'):
asps += fnmatch.filter(files, '*.asp')
像os.path.join()。我想象OP会发现他需要完整的路径来找到找到的文件。 – hughdbrown 2009-08-13 22:01:42
当我做了第二个解决方案时,它只是反复搜索同一个目录。我认为它需要这个: >>> asps = [] >>> p = r'C:\ temp' >>> for root,dirs,os.walk中的文件(p): ... asps + = fnmatch.filter([os.path.join(root,file)for file in files],“* .txt”) – hughdbrown 2009-08-13 22:09:26
嗯,不太对。我在根目录下的多个目录中具有相同的文件。它看起来像重复搜索相同的目录,但不是。如果您的第一个解决方案与附加的路径一样,它仍然会更好。 – hughdbrown 2009-08-13 22:35:57
或'平均价格= [(如果在文件的文件的文件file.endswith ('.asp'))for _,__,os.walk(path)]中的文件],我认为这将是“Pythonic”的做法(尽管对于完全相同的东西它实际上只是略短一些的语法) 。 – 2009-08-13 21:01:03
1衬里很不错,但在可读性方面并不完全是Pythonic。 – Unknown 2009-08-13 21:02:38
这会递减目录但不存储文件的路径。 – hughdbrown 2009-08-13 22:12:41