【发布时间】:2011-12-07 15:17:03
【问题描述】:
我对 python 有点陌生,现在我正在尝试一些东西,特别是: 递归遍历所有目录和文件并使用 os.walk 打印文件大小。
我的问题是,尽管文件存在于这些目录中,但程序不会通过几个目录递归。我的机器中的一个示例是 Python2.7 目录。这是在 /usr 目录中。当我将顶部路径指定为 /usr 时,不会解析此目录。但是当我特别提到 Python2.7 目录的路径时,它确实会解析它。任何人都可以通过指出错误来帮助我吗? 这是我的代码:
from os import walk, listdir, stat
from os.path import join, isdir, isfile, islink, getsize, abspath, dirname, realpath
from stat import ST_INO as st_ino
from sets import Set
def determine_parent_directory( root ):
#print "parent-dirname : ", dirname( realpath( root ) )
return stat( dirname( abspath( root ) ) ).st_ino
def determine_size( root, file ):
size_type = ""
file_size = getsize( abspath( ( join( root, file ) ) ) )
if file_size < 1024:
size_type = "bytes"
else:
if file_size > 1024:
file_size /= 1024
size_type = "Kb"
if file_size > 1024:
file_size /= 1024
size_type = "Mb"
if file_size > 1024:
file_size /= 1024
size_type = "Gb"
if file_size > 1024:
file_size /= 1024
size_type = "Tb"
return [file_size, size_type]
def walk_through( path ):
total_size = 0
for root, dirs, files in walk( path ):
print root.split( "/" )[-1]
print "\n"
for file in files:
if islink( abspath( join( root, file ) ) ):
print "link"
continue
#total_size += determine_size( root, file )[0]
file_size, size_type = determine_size( root, file )
print "\t\t\t{0} -- {1} {2}".format ( file, file_size, size_type )
#total_size += file_size
print "\n"
#print total_size
def get_path_user():
default_path = "/usr"
walk_through( default_path )
if __name__ == '__main__':
get_path_user()
【问题讨论】:
-
您的缩进从 walk_through 开始就搞砸了。我认为这只是您复制和粘贴的结果,而不是您的代码的样子……对吗?
标签: python