次のコードがありますが、エラーは発生しませんが、出力も生成されません。
スクリプトは、次のことを行うように作成されています。
このスクリプトは、タブで区切られた 4 つの列の入力ファイルを受け取ります。
次に、列 1 で一意の値をカウントし、列 4 (2 つの異なるタグ: C と D を含む) で対応する値の頻度をカウントします。
出力は、列 1 の一意の値とそれに対応する列 4 の値の頻度を含む 3 つのタブで区切られた列です。列 2 にはタグ C に対応する列 1 の文字列の頻度があり、列 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
。大量のファイルを処理する必要があるため。