2013-07-26 121 views
0
import os 
def search_dir(dir,topdown=True): 
    files = {} 
    for root, dirs, files in os.walk(dir, topdown): 
     for name in files: 
      fileAdd = os.path.join(root,name) 
      fileSize = os.path.getsize(fileAdd) 
      files[fileAdd] = str(fileSize); 
      print (fileAdd + ', Size:' + str(fileSize)+'kb') 
     for name in dirs: 
      fileAdd = os.path.join(root,name) 
      fileSize = os.path.getsize(fileAdd) 
      files[fileAdd] = fileSize; 
      print (fileAdd + ', Size:'+ str(fileSize)+'kb') 

dir = raw_input('please input the path:') 
search_dir(dir) 

for fileAdd in sorted(files): 
    print("{0} size {1}kb".format(fileAdd, files[fileAdd])) 

终端说“列表索引必须是整数不是str”,我不知道为什么?列表索引必须是整数不是str

回答

2

您使用了两次“文件”变量。

files = {} 
for root, dirs, files in os.walk(dir, topdown): 

其中一个必须去。

(咆哮模式:ON)

这样的事情是使用调试器时很容易被发现。

(咆哮模式:OFF)

+0

是的,你说得对,非常感谢你。 – tonysok

+2

StackOverflow *是一种分布式调试器。我敢打赌,它通常比使用真正的调试器更快...;) – Bitwise

+0

@Bitwise - 嗯,我有点像这样的想法。 – tdelaney

相关问题