我有一个名为的目录main
,其中包含两个文件:一个名为的文本文件,其内容alex.txt
只有一个,100
另一个文件名为.mark.txt
400
我想创建一个将进入目录的函数,并获取每个文件名和该文件的内容并将它们存储(到字典中?)。所以最终结果看起来像这样:
({'alex.txt', '100'}, {'mark.txt', '400'})
对大量文件执行此操作的最佳方法是什么?
这看起来是一份不错的工作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()
如果存在子目录,此解决方案还将递归到子目录中。
使用字典看起来像是要走的路。
您可以使用os.listdir
来获取directory
. 然后,迭代文件,打开每个文件,读取其输入并将它们存储在字典中。
如果您的main
目录有一些子目录,您可能希望使用该os.walk
函数以递归方式处理它们。坚持os.listdir
否则。
请注意, 的项目os.listdir
是相对于 的main
。您可能希望main
在打开文件之前添加路径。在这种情况下,使用os.path.join(path_to_main, f)
where f
is an item of os.listdir
。
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('.') )