Python:尝试使用'count'限制"print"输出的行数
我有一个脚本,它会遍历系统目录,获取该目录下文件的大小。然后,它会根据文件大小进行排序(从大到小),并接受两个参数。第一个参数是系统路径,第二个参数是一个整数,用来限制输出的文件数量。
我正在使用一个循环来限制打印的输出,但它却陷入了无限循环……显然,哪里出了问题,但我看不出来。
#!/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()
5 个回答
2
你应该用一个 if
语句,而不是 while
循环。
你想要在 count <= mycnt
的时候退出程序。
4
顺便说一下,repr模块提供了一些工具,可以在显示列表的时候限制输出的行数。
3
如果mycnt
是一个字符串,而不是整数(因为从sys.argv
直接读取时,它的确是字符串),那么你的循环将永远不会结束。