Python:尝试使用'count'限制"print"输出的行数

0 投票
5 回答
2985 浏览
提问于 2025-04-17 06:09

我有一个脚本,它会遍历系统目录,获取该目录下文件的大小。然后,它会根据文件大小进行排序(从大到小),并接受两个参数。第一个参数是系统路径,第二个参数是一个整数,用来限制输出的文件数量。

我正在使用一个循环来限制打印的输出,但它却陷入了无限循环……显然,哪里出了问题,但我看不出来。

#!/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直接读取时,它的确是字符串),那么你的循环将永远不会结束。

撰写回答