Python:尝试使用'count'来限制“print”将输出的行数

2024-10-02 14:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它将遍历一个系统目录,并获得该目录中的文件大小。然后按文件大小(降序)排序,接受两个参数。第一个参数是系统路径,第二个参数是一个整数,用于将输出限制为该整数计数。在

我正在使用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()

Tags: pathkeyinfor参数oscountsys
3条回答

如果mycnt是一个字符串,而不是一个整数(当直接从sys.argv读取时就是这样),那么循环将永远不会结束。在

FWIW,repr模块具有显示列表的工具,同时限制输出行数。在

您应该有一个if,而不是while。在

如果count <= mycnt,您想退出程序。在

相关问题 更多 >