我有以下代码,它不会给出错误,但也不会产生输出。
该脚本用于执行以下操作:
该脚本采用 4 个制表符分隔列的输入文件:
然后它计算第 1 列中的唯一值和第 4 列中对应值的频率(其中包含 2 个不同的标签:C 和 D)。
输出是 3 个制表符分隔的列,其中包含第 1 列的唯一值以及它们在第 4 列中值的相应频率:第 2 列具有第 1 列中与标记 C 对应的字符串的频率,第 3 列具有字符串的频率在与标签 D 对应的第 1 列中。
这是一个输入示例:
algorithm-n like-1-resonator-n 8.1848 C
algorithm-n produce-hull-n 7.9104 C
algorithm-n like-1-resonator-n 8.1848 D
algorithm-n produce-hull-n 7.9104 D
anything-n about-1-Zulus-n 7.3731 C
anything-n above-shortage-n 6.0142 C
anything-n above-1-gig-n 5.8967 C
anything-n above-1-magnification-n 7.8973 C
anything-n after-1-memory-n 2.5866 C
这是所需输出的示例:
algorithm-n 2 2
anything-n 5 0
我正在使用的代码如下(可以看到考虑了评论中的所有建议):
from collections import defaultdict, Counter
def sortAndCount(opened_file):
lemma_sense_freqs = defaultdict(Counter)
for line in opened_file:
lemma, _, _, senseCode = line.split()
lemma_sense_freqs[lemma][senseCode] += 1
return lemma_sense_freqs
def writeOutCsv(output_file, input_dict):
with open(output_file, "wb") as outfile:
for lemma in input_dict.keys():
for senseCode in input_dict[lemma].keys():
outstring = "\t".join([lemma, senseCode,\
str(input_dict[lemma][senseCode])])
outfile.write(outstring + "\n")
import os
import glob
folderPath = "Python_Counter" # declare here
for input_file in glob.glob(os.path.join(folderPath, 'out_')):
with open(input_file, "rb") as opened_file:
lemma_sense_freqs = sortAndCount(input_file)
output_file = "count_*.csv"
writeOutCsv(output_file, lemma_sense_freqs)
我的直觉是问题来自“glob”函数。但是,正如我之前所说:代码本身不会给我一个错误——但它似乎也没有产生输出。
有人可以帮忙吗?
有人可以通过输出结果为我提供有关如何解决问题的见解glob
。由于我需要处理大量文件。