私はまったく新しいPythonです。今はいくつかのものを試しています: os.walkを使ってすべてのディレクトリとファイルを再帰的に調べてください。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から下がってしまいます。私はあなたがコピーし貼り付けただけで、あなたのコードがどのように見えるのか正確ではないと思います...そうですか? –