我有一个名为main
的目录,其中包含两个文件:一个名为alex.txt
的文本文件,其内容只有100
,另一个文件名为mark.txt
400
。
我想创建一个进入目录的函数,并获取每个文件名和该文件的内容并将它们存储(放入dict中?)。所以最终结果看起来像这样:
({'alex.txt', '100'}, {'mark.txt', '400'})
对大量文件执行此操作的最佳方法是什么?
答案 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)
,其中f
是os.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('.') )