我正在尝试打印所有文件列表的大小,但它会抛出错误。 这是代码:
import os
def printSize(fileAbsPath) :
print os.path.getsize(fileAbsPath)
for folderName, subfolders, filenames in os.walk('/Users/kris/Desktop'):
for filename in filenames :
try :
printSize(os.path.abspath(filename))
except Exception as err:
print 'An exception happend : ' + str(err)
而且,错误是:
An exception happend : [Errno 2] No such file or directory: '/Users/kris/Desktop/AutomateBoringStuff/.DS_Store'
An exception happend : [Errno 2] No such file or directory: '/Users/kris/Desktop/AutomateBoringStuff/.gitignore'
An exception happend : [Errno 2] No such file or directory: '/Users/kris/Desktop/AutomateBoringStuff/.gitmodules'
An exception happend : [Errno 2] No such file or directory: '/Users/kris/Desktop/AutomateBoringStuff/.localized'
.
.
.
.
An exception happend : [Errno 2] No such file or directory: '/Users/kris/Desktop/AutomateBoringStuff/BLE Scanner.m4a'
An exception happend : [Errno 2] No such file or directory: '/Users/kris/Desktop/AutomateBoringStuff/Screen Shot 2015-07-23 at 3.30.52 PM.png'
我不知道它有什么问题。我认为它与“隐藏文件”有点相关,但事实并非如此。
答案 0 :(得分:1)
试试这个:
printSize(os.path.abspath(os.path.join(folderName, filename)))
答案 1 :(得分:0)
来自os.walk
的文件(强调补充):
通过从上到下或从下到上走树来生成目录树中的文件名。对于以目录top(包括top本身)为根的树中的每个目录,它会产生一个3元组(dirpath,dirnames,filenames)。 dirpath是一个字符串,即目录的路径。 dirnames是dirpath中子目录的名称列表(不包括'。'和' ..')。 filenames是dirpath中非目录文件的名称列表。请注意,列表中的名称不包含路径组件。 要获取dirpath中文件或目录的完整路径(以top开头),请执行os.path.join(dirpath,name)。
我猜你在AutomateBoringStuff
中运行了你的脚本(所以它是工作目录),但文件实际上在Desktop
。
/Users/kris/Desktop/AutomateBoringStuff/BLE Scanner.m4a
应为/Users/kris/Desktop/BLE Scanner.m4a
答案 2 :(得分:0)