1

所以这是一个简单的代码,试图找出一个短语(“每一种资产”)在多个文件中出现的频率。

import codecs
import glob
import os.path

filelocation = "C:\\Users\\Shoi\\Desktop\\mark project\\BITs\\*.txt"

for filepath in glob.glob(filelocation): # for each file
    FILE = codecs.open(filepath, 'r', encoding="utf-8")
    if ("every kind of asset" in FILE.read().lower()):
        print ("Found in " + os.path.basename(filepath))
        freq = FILE.read().lower().count("every kind of asset")
        print(freq)
    else:
        print ("not found in " + os.path.basename(filepath))

但是,即使在某些文件中找到了该短语(打印了“在文件中找到”),计数函数也会返回并始终打印 0。

此代码仅搜索一个短语。当我遍历短语列表时,在所有文件中搜索每个短语 - count 函数为某些短语返回完全正确的频率结果,但为其他短语返回 0,即使该短语存在于文件中并且它打印“找到”

请帮忙。

4

1 回答 1

5

你有两个电话到FILE.read(). 在第一个之后,光标将位于文件末尾,因此第二个调用将返回一个空字符串,其中根本不包含您要查找的字符串。

读取内容一次并将它们存储在变量中:

for filepath in glob.glob(filelocation): # for each file
    FILE = codecs.open(filepath, 'r', encoding="utf-8")
    contents = FILE.read().lower()
    if "every kind of asset" in contents:
        print("Found in " + os.path.basename(filepath))
        freq = contents.count("every kind of asset")
        print(freq)
    else:
        print("not found in " + os.path.basename(filepath))
于 2013-04-14T01:02:31.427 回答