使用函数输入任意数量的文本文件作为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个文件,并且所有文件的计数器都相同。我如何将计数器分开来单独打印每个文件的统计信息?
答案 0 :(得分:1)
首先,您需要重置每个文件的统计信息:
for x in arg:
lines = words = chars = 0
with open("{}{}".format(folder, x), "r") as inp:
...
其次,要保持总计数,您需要使用单独的变量,因为您现在正在重置每次迭代的变量:
total_lines = total_words = total_characters = 0
def cfunc(folder, *arg):
global total_lines, total_words, total_chars
for x in arg:
...
print(x, lines, words, chars)
total_lines += lines
total_words += words
total_chars += chars
当然,如果需要,您可以命名全局变量lines
,words
和chars
,然后只需对循环中使用的变量使用不同的名称。