【发布时间】:2015-10-01 21:49:26
【问题描述】:
处理一个函数,用于输入任意数量的文本文件作为 args。功能是统计每个文件的行数、字数和字符数,以及总数:
lines = words = chars = 0
def cfunc(folder, *arg):
global lines, words, chars
for x in arg:
with open("{}{}".format(folder, x), "r") as inp:
for line in inp:
lines += 1
words += len(line.split(" "))
chars += len(line)
print(x, lines, words, chars)
cfunc("C:/", "text1.txt", "text2.txt", "text3.txt")
第一个文件的计数器是正确的。对于第三个,计数器基本上显示了所有 3 个文件中的行/单词/字符的总数。据我了解,这是因为 inp 将所有 3 个文件一起读取,并且所有文件的计数器都相同。如何分开计数器以分别打印每个文件的统计信息?
【问题讨论】:
-
你为什么使用
global?!这与您想要的行为明确完全相反。如果您将lines = words = chars = 0放入循环中,您将分别获得每个文件的计数。 -
你为什么在这里使用全局?
标签: python