我编写了一个脚本来抓取我系统上的目录并记录文件元数据。我用os.walk做了这个。
它在大多数情况下都有效,但在不同的机器上运行时会返回不同的文件列表。
现在我在我的Dropbox文件夹上测试;在我的MBPro(狮子)上它抓取文件夹并返回正确数量的文件。在我的iMac(山狮)上它没有,通常每次运行跳过1-3个文件。额外的抓取将拾取一个落后者,但通常会继续忽略目录中的一些文件。
这是代码的简短片段:
directory = '/Users/user/Dropbox/'
for dirname, dirnames, filenames in os.walk(directory):
for subdirname in dirnames:
for filename in filenames:
if os.path.isfile(filename):
# collect file info using os.path and os.stat
我显然想忽略目录。有一个更好的方法吗?最好是与os无关的东西。
答案 0 :(得分:2)
诀窍就像@MartijnPieters建议的那样。也没有必要循环遍历子目录,因为它们是在循环的下一次迭代中被拾取的。这是导致我的两台机器之间出现差异的原因。
另外值得注意的是,OSX有一种非常奇怪的方式来计算给定目录中的文件。您可以通过在给定目录上运行df然后执行“获取信息”并比较结果来查看此内容。
directory = '/Users/user/Dropbox/'
for dirname, dirnames, filenames in os.walk(directory):
for filename in filenames:
if os.path.isfile(filename):
# collect file info using os.path and os.stat'