我正在使用Python在一个大硬盘上进行文件查找。我一直在研究os.walk和glob。通常我使用os.walk,因为我认为它更整洁,速度也更快(对于普通大小的目录)。有没有人对它们两个有过经验,可以说哪一个更有效率?正如我所说,glob似乎更慢,但你可以使用通配符等,而使用walk,则必须过滤结果。以下是查找核心转储文件的示例。
core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
for file in files:
if core.search(file):
path = os.path.join(root,file)
print "Deleting: " + path
os.remove(path)
或者for file in iglob("/path/to/dir/core.*")
print "Deleting: " + file
os.remove(file)
os.listdir
和os.isdir
,所以我的直觉告诉我你不会在这两种方式中获得太多收益。(但是,正如下面两个答案中指出的那样,os.walk
会递归子目录而glob.iglob
不会,因此没有可比性)。如果你最终确实遇到了性能问题,请对几种方法进行分析。否则,就写出清晰的代码即可。 - Steven Rumbalski