如何在python中读取目录的所有文件并将文件数据保存在字典中

时间:2020-10-28 10:41:26

标签: python csv txt

我的文件夹中有很多文件。它们以.txt格式成千上万。我想阅读所有这些文档,并希望将文档内容存储在字典中。词典的关键字可以是文档名称,值应该是该特定文档的内容。但是现在,我只能打印文件的所有名称,而无法创建可以存储其内容的字典。我已经编写了这段代码:

import os
with os.scandir('docs/') as entries:
    for entry in entries:
        print(entry.name)
        with open('F:\folder\docs\'+entry.name) as f:
            contents = {'entry.name': f.read()}

或者,如果您可以给我一些新方法来读取所有文件中的内容,然后将其存储在字典中。请在这方面帮助我。谢谢。

3 个答案:

答案 0 :(得分:0)

假设您发布的代码中的循环有效-以下代码将创建您要查找的字典。

import os
data = {}
with os.scandir('docs/') as entries:
    for entry in entries:
        with open('F:\folder\docs\'+entry.name) as f:
            data[entry.name] = f.read()

答案 1 :(得分:0)

我的解决方案:

import os
import json


all_files = dict()
with os.scandir() as entries:
    for entry in entries:
        print(entry.name)
        with open(rf'{entry.name}') as f:
            contents = f.read()
        all_files[f'{entry.name}'] = contents
        
with open('all_files.json', 'w') as f:
    json.dump(all_files, f, indent=2)

答案 2 :(得分:0)

这种方式应该可以工作。

import os

docs_dict = {}

with os.scandir('docs/') as entries:
    for entry in entries:
        print(entry.name)
        with open('F:/folder/docs/'+ entry.name ) as f:
          val = f.read()
          docs_dict[f.name] = val
          f.close()

我在for循环之外创建了一个空字典。然后,扩展您的代码,我将文档的内容存储在val中,然后添加了字典项。我也将F:\folder\docs\更改为F:/folder/docs/,因为Python希望在路径中使用正斜杠,并使用\排除了字符串的结尾引号。