Python - 从目录中读取文件,但在子目录中找不到文件(该文件确实存在)
Python - 从目录中读取文件,但在子目录中找不到文件(该文件确实存在)
我相信这只是一个简单的语法问题 - 但我不知道为什么我的代码:
import os from collections import Counter d = {} for filename in os.listdir('testfilefolder'): f = open(filename,'r') d = (f.read()).lower() freqs = Counter(d) print(freqs)
无法工作 - 它似乎可以进入\'testfilefolder\'文件夹并告诉我文件在那里,例如一个错误消息\'file2.txt\'没有找到。它可以找到它告诉我它没有找到...
然而我可以使这段代码工作:
from collections import Counter d = {} f = open("testfilefolder/file2.txt",'r') d = (f.read()).lower() freqs = Counter(d) print(freqs)
奖励-这是我正在尝试做什么的好方法(从文件中读取并计算单词的频率)?这是我用Python的第一天(虽然我在程序设计方面有一些经验)。我必须说我喜欢Python!
谢谢
布赖恩
admin 更改状态以发布 2023年5月24日
正如isedev指出的那样,listdir()只返回文件名,而不是完整路径(或相对路径)。 解决此问题的另一种方法是进入相关目录,然后使用 os.listdir('。')< / code>。
其次,您的目标似乎是计算单词频率,而不是字母(字符)频率。 为此,您需要将文件内容分解为单词。 我更喜欢使用正则表达式。
第三,您的解决方案分别为每个文件计算单词频率。 如果您需要对所有文件执行此操作,请在开始时创建一个 Counter()
对象,然后调用 update()
方法以统计计数。
没有更多的扯淡,我的解决方案:
import collections import re import os all_files_frequency = collections.Counter() previous_dir = os.getcwd() os.chdir('testfilefolder') for filename in os.listdir('.'): with open(filename) as f: file_contents = f.read().lower() words = re.findall(r"[a-zA-Z0-9']+", file_contents) # Breaks up into words frequency = collections.Counter(words) # For this file only all_files_frequency.update(words) # For all files print(frequency) os.chdir(previous_dir) print '' print all_files_frequency