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

时间:2012-09-25 13:05:36

标签: python file file-io

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

我想创建一个进入目录的函数,并获取每个文件名和该文件的内容并将它们存储(放入dict中?)。所以最终结果看起来像这样:

({'alex.txt', '100'}, {'mark.txt', '400'})

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

3 个答案:

答案 0 :(得分:6)

对于os.walk

来说,这看起来不错
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()

如果子目录存在,此解决方案也会递归到子目录中。

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

import os
bar = {}
[bar.update({i: open(i, 'r').read()}) for i in os.listdir('.')]

或(通过mgilson)

bar = dict( (i,open(i).read()) for i in os.listdir('.') )