python中的换行字计数

python中的换行字计数,python,word-count,Python,Word Count,我正在尝试编写一个脚本来提取目录中许多文件的字数。我有它的工作相当接近我想要的,但有一个部分,是甩我了。到目前为止,守则是: import glob directory = "/Users/.../.../files/*" output = "/Users/.../.../output.txt" filepath = glob.glob(directory) def wordCount(filepath): for file in filepath: name =

我正在尝试编写一个脚本来提取目录中许多文件的字数。我有它的工作相当接近我想要的,但有一个部分,是甩我了。到目前为止,守则是:

import glob

directory = "/Users/.../.../files/*"
output = "/Users/.../.../output.txt"

filepath = glob.glob(directory)

def wordCount(filepath):
    for file in filepath:
        name = file
        fileO = open(file, 'r')
        for line in fileO:
            sentences = 0
            sentences += line.count('.') + line.count('!') + line.count('?')

            tempwords = line.split()
            words = 0
            words += len(tempwords)

            outputO = open(output, "a")
            outputO.write("Name: " + name + "\n" + "Words: " + str(words) + "\n")

wordCount(filepath)
这会将单词计数写入名为“output.txt”的文件,并提供如下输出:

Name: /Users/..../..../files/Bush1989.02.9.txt
Words: 10
Name: /Users/..../..../files/Bush1989.02.9.txt
Words: 0
Name: /Users/..../..../files/Bush1989.02.9.txt
Words: 3
Name: /Users/..../..../files/Bush1989.02.9.txt
Words: 0
Name: /Users/..../..../files/Bush1989.02.9.txt
Words: 4821
这会对目录中的每个文件重复。如您所见,它为每个文件提供了多个计数。文件的格式如下:

在国会联席会议前关于行政目标的讲话

1989年2月9日

议长先生,总统先生,尊敬的众议院议员和 参议院

因此,脚本似乎给了我文件每个“部分”的计数,比如第一行的10个单词,换行符的0,下一行的3,下一行的0,然后是正文的计数


我要查找的是每个文件的单个计数。欢迎提供任何帮助/指导。

打印文件名和字数的内部循环的最后两行应该是外部循环的一部分,而不是内部循环的一部分-实际上,它们每行运行一次

您还需要重置每行的句子和字数-这些应该在外循环中,在内循环开始之前

以下是更改后代码的外观:

import glob

directory = "/Users/.../.../files/*"
output = "/Users/.../.../output.txt"

filepath = glob.glob(directory)

def wordCount(filepath):
    for file in filepath:
        name = file
        fileO = open(file, 'r')
        sentences = 0
        words = 0
        for line in fileO:
            sentences += line.count('.') + line.count('!') + line.count('?')

            tempwords = line.split()
            words += len(tempwords)

        outputO = open(output, "a")
        outputO.write("Name: " + name + "\n" + "Words: " + str(words) + "\n")

wordCount(filepath)

你的身份不是错了吗?我的意思是,最后一行是每行调用一次,但你的意思是每文件调用一次,不是吗


(此外,尽量避免将“file”作为标识符-它是Python类型)

x=0
后跟同一循环中的
x+=something
毫无意义。非常感谢您的帮助@user1074057:另外,您在每个输入行打开一次输出文件!上面的代码在每个输入文件中打开它一次,这仍然是非常低效的。在代码开头打开它一次。进一步:你数“句子”,但不写结果。