首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获取整个目录的文件名和内容?

如何获取整个目录的文件名和内容?
EN

Stack Overflow用户
提问于 2012-09-25 21:05:36
回答 3查看 94关注 0票数 1

我有一个名为main的目录,其中包含两个文件:一个名为alex.txt的文本文件,其内容仅为100,另一个名为mark.txt的文件,其内容为400

我想创建一个进入目录的函数,并获取每个文件名和该文件的内容并将其存储(到dict中?)。因此,最终结果将如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
({'alex.txt', '100'}, {'mark.txt', '400'})

对大量文件执行此操作的最佳方式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-25 21:08:23

这看起来像是os.walk的一份好工作

代码语言:javascript
代码运行次数:0
运行
复制
d = {}
for path,dirs,fnames in os.walk(top):
    for fname in fnames:
        visit = os.path.join(path,fname)
        with open(visit) as f:
             d[visit] = f.read()

此解决方案还将递归到子目录(如果它们存在)。

票数 6
EN

Stack Overflow用户

发布于 2012-09-25 21:08:11

使用字典看起来像是要走的路。

您可以使用os.listdir获取directory中的文件列表。然后,对文件进行迭代,打开每个文件,读取其输入并将其存储在您的字典中。

如果您的main目录有一些子目录,您可能希望使用os.walk函数递归地处理它们。否则请坚持使用os.listdir

请注意,os.listdir的一项是相对于main的。在打开文件之前,您可能需要将路径添加到main。在这种情况下,使用os.path.join(path_to_main, f),其中fos.listdir的一项。

票数 2
EN

Stack Overflow用户

发布于 2012-09-25 21:11:31

代码语言:javascript
代码运行次数:0
运行
复制
import os
bar = {}
[bar.update({i: open(i, 'r').read()}) for i in os.listdir('.')]

或者(通过mgilson)

代码语言:javascript
代码运行次数:0
运行
复制
bar = dict( (i,open(i).read()) for i in os.listdir('.') )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12583609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档