gpt4 book ai didi

Python:从 txt 文件的目录中计算单词并将单词计数写入单独的 txt 文件

转载 作者:行者123 更新时间:2023-12-04 07:52:54 25 4
gpt4 key购买 nike

Python 新手,我正在尝试计算文本文件目录中的单词数,并将输出写入单独的文本文件。但是,我想指定条件。因此,如果字数 > 0 是想将计数和文件路径写入一个文件,如果计数为 == 0。我想将计数和文件路径写入一个单独的文件。以下是我到目前为止的代码。我想我已经接近了,但是我对如何处理条件和单独的文件感到困惑。谢谢。

import sys
import os
from collections import Counter
import glob

stdoutOrigin=sys.stdout
sys.stdout = open("log.txt", "w")

def count_words_in_dir(dirpath, words, action=None):
for filepath in glob.iglob(os.path.join("path", '*.txt')):
with open(filepath) as f:
data = f.read()
for key,val in words.items():
#print("key is " + key + "\n")
ct = data.count(key)
words[key] = ct
if action:
action(filepath, words)





def print_summary(filepath, words):
for key,val in sorted(words.items()):
print(filepath)
if val > 0:
print('{0}:\t{1}'.format(
key,
val))








filepath = sys.argv[1]
keys = ["x", "y"]
words = dict.fromkeys(keys,0)

count_words_in_dir(filepath, words, action=print_summary)

sys.stdout.close()
sys.stdout=stdoutOrigin

最佳答案

我强烈敦促您不要重新调整用途 stdout用于将数据写入文件作为程序正常过程的一部分。我也想知道你怎么会有“count < 0”这个词。我假设你的意思是“计数 == 0”。
您的代码的主要问题在于这一行:

for filepath in glob.iglob(os.path.join("path", '*.txt')):
字符串常量 "path"我很确定不属于那里。我想你想要 filepath那里代替。我认为这个问题会阻止您的代码工作。
这是您的代码版本,我修复了这些问题并添加了根据计数写入两个不同输出文件的逻辑:
import sys
import os
import glob

out1 = open("/tmp/so/seen.txt", "w")
out2 = open("/tmp/so/missing.txt", "w")

def count_words_in_dir(dirpath, words, action=None):
for filepath in glob.iglob(os.path.join(dirpath, '*.txt')):
with open(filepath) as f:
data = f.read()
for key, val in words.items():
# print("key is " + key + "\n")
ct = data.count(key)
words[key] = ct
if action:
action(filepath, words)


def print_summary(filepath, words):
for key, val in sorted(words.items()):
whichout = out1 if val > 0 else out2
print(filepath, file=whichout)
print('{0}: {1}'.format(key, val), file=whichout)

filepath = sys.argv[1]
keys = ["country", "friend", "turnip"]
words = dict.fromkeys(keys, 0)

count_words_in_dir(filepath, words, action=print_summary)

out1.close()
out2.close()
结果:
文件看到.txt:
/Users/steve/tmp/so/dir/data2.txt
friend: 1
/Users/steve/tmp/so/dir/data.txt
country: 2
/Users/steve/tmp/so/dir/data.txt
friend: 1
文件丢失.txt:
/Users/steve/tmp/so/dir/data2.txt
country: 0
/Users/steve/tmp/so/dir/data2.txt
turnip: 0
/Users/steve/tmp/so/dir/data.txt
turnip: 0
(原谅我使用了一些比你更有趣的搜索词)

关于Python:从 txt 文件的目录中计算单词并将单词计数写入单独的 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66862604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com