1

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

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

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

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

4

3 回答 3

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()

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

于 2012-09-25T13:08:22.540 回答
2

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

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

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

请注意, 的项目os.listdir是相对于 的main。您可能希望main在打开文件之前添加路径。在这种情况下,使用os.path.join(path_to_main, f)where fis an item of os.listdir

于 2012-09-25T13:08:11.453 回答
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('.') )
于 2012-09-25T13:11:31.143 回答