当前位置: 首页 > 面试题库 >

Python-从子目录中找不到的目录文件中读取文件

周正真
2023-03-14
问题内容

我坚信这只是一种语法-但是我不知道为什么我的代码:

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!

谢谢,

布赖恩


问题答案:

正如isedev指出的那样,listdir()仅返回文件名,而不返回完整路径(或相对路径)。解决此问题的另一种方法是os.chdir()进入相关目录os.listdir('.')

其次,您的目标似乎是计算单词的频率,而不是字母(字符)的频率。为此,您需要将文件的内容分解为单词。我更喜欢为此使用正则表达式。

第三,您的解决方案分别计算每个文件的单词频率。如果您需要对所有文件执行此操作,请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


 类似资料:
  • 问题内容: 我正在寻找一种方法来获取给定目录中所有目录的名称,而不是文件。 例如,假设我有一个名为的文件夹,并且在其中有3个文件夹: 和。 我想获取文件夹的名称,但不关心内容或Child1,Child2等内的子文件夹的名称。 有没有简单的方法可以做到这一点? 问题答案: 您可以使用列出所有文件名,然后使用循环检查每个子文件并使用函数获取子目录。 例如:

  • 问题内容: 使用此代码 返回特定目录中文件夹和文件的总和,而不用关心 子目录 。我想获取目录及其子目录中所有文件的数量。 PS:返回所有文件和文件夹的总和几乎无关紧要。 任何帮助表示赞赏,谢谢 问题答案: 试试这个。 它可能会帮助您。

  • 问题内容: 我需要从Java WAR应用程序的类路径中读取文本文件。如何将其读取为InputStream。文件位于/ WEB-INF / classes /文件夹中,但是当我使用以下代码时,它仅返回null。 问题答案: 在其前面加上正斜杠以表示类路径的根: 或者,您可以使用来查找相对于上下文根的资源。因此,类将是。

  • 问题内容: 在Python中,我可以使用哪些命令来查找: 1.当前目录(运行Python脚本时我在终端中的位置) 2.我正在执行的文件在哪里? 问题答案: 要获取包含Python文件的目录的完整路径,请在该文件中写入以下内容: (请注意,如果你已经习惯于更改当前的工作目录,则上述方法将不起作用,因为常量的值是相对于当前的工作目录而言的,并且不会被调用更改。) 要获取当前的工作目录,请使用 上面使用

  • 问题内容: 如何使用PHP获取目录内的文件名? 我找不到使用Google的相关命令,所以希望这个问题能对那些类似的问题有所帮助。 问题答案: 有很多方法。较旧的方法是但 可能是最好的方法。 还有(与一起使用)和。 以下是一些有关如何使用每个示例打印当前目录中所有文件的示例: 用法:(推荐) 用法: 和用法: 用法: 如评论中所述,这是很好的,因为我在那里使用的星号实际上可以用于对文件进行匹配,因此

  • 问题内容: 这是我正在使用的结构: 我想要做的就是在script.py中定义的类进口和。如果我做: 对于中定义的类,它工作正常。但是使用此解决方案时,如果在不同文件中定义了许多类,并且我想导入所有这些类,则必须为每个文件键入一行。必须有一个捷径。我试过了: 但这没有解决。 编辑 :这是文件的内容: 这是(按照Apalala的建议使用): 这是: 这是: 这是: 这是我尝试运行时得到的跟踪: 问题答