【发布时间】:2014-03-08 10:08:29
【问题描述】:
我正在使用 Python 2.7.x 遍历目录树,获取遍历时的文件和目录大小。我遇到的问题是将别名文件误认为目录,然后抛出“没有这样的文件或目录”的错误。
代码如下:
def get_size(start_path = '.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
total_size += os.path.getsize(fp)
return total_size
for dirName, subdirList, fileList in os.walk(rootDir, topdown=False):
dirSize = get_size(dirName) #this throws an error on alias files
for fname in fileList:
#do other things
我也尝试了 os.path.isdir() ,但它不起作用。此外,我尝试了
return File.FSResolveAliasFile(path, True)[0].as_pathname()
但这似乎并没有提取所有别名文件。
有什么想法吗?
【问题讨论】:
-
别名是指符号链接吗?
-
@warunsl 我很确定他指的是可以使用 Finder 中的“制作别名”选项创建的 OS X 特定别名文件。 (en.wikipedia.org/wiki/Alias_%28Mac_OS%29)
-
@ballofpopculter 您的代码在 OS X 10.9.2 上的 Python 2.7.5 中在别名和符号链接上都运行良好。别名被视为文件,符号链接被跳过。
标签: python macos os.walk os.path