我有一个脚本,它将遍历一个系统目录,并获得该目录中的文件大小。然后按文件大小(降序)排序,接受两个参数。第一个参数是系统路径,第二个参数是一个整数,用于将输出限制为该整数计数。在
我正在使用while循环来限制打印输出,但它陷入了一个无限循环。。。。显然,出了点问题,但我看不出来。在
#!/usr/bin/python
import sys
import os
#Grab arguments
mydir = sys.argv[1]
mycnt = sys.argv[2]
print mydir
print mycnt
#set base dir
root_path = mydir
fileSize = 0
rootdir = mydir
filedict = dict()
count = 0
for root, dirs, files in os.walk(rootdir):
for file in files:
filepath = os.path.join(root,file)
filesize = fileSize + os.path.getsize(filepath)
filedict[filepath] = filesize
for key, value in sorted(filedict.iteritems(), key=lambda (key,val): (val,key), reverse=True):
while (count <= mycnt):
print "(%8s)" " (%-8s)" % (value, key)
count += 1
else:
sys.exit()
如果
mycnt
是一个字符串,而不是一个整数(当直接从sys.argv
读取时就是这样),那么循环将永远不会结束。在FWIW,repr模块具有显示列表的工具,同时限制输出行数。在
您应该有一个
if
,而不是while
。在如果
count <= mycnt
,您想退出程序。在相关问题 更多 >
编程相关推荐