Python遍历目录并更新字典
当我想添加所有文件夹时,字典“d”只包含最新迭代的子文件夹键和值。我不明白为什么我的字典在文件夹更改后从空字典开始更新Python遍历目录并更新字典,python,for-loop,dictionary,nested-loops,Python,For Loop,Dictionary,Nested Loops,当我想添加所有文件夹时,字典“d”只包含最新迭代的子文件夹键和值。我不明白为什么我的字典在文件夹更改后从空字典开始更新 import os from os.path import join for (dirname, dirs, files) in os.walk('.'): d = dict() for filename in files: if filename.endswith('.txt') : value_thefile = o
import os
from os.path import join
for (dirname, dirs, files) in os.walk('.'):
d = dict()
for filename in files:
if filename.endswith('.txt') :
value_thefile = os.path.join(dirname,filename)
key_size = os.path.getsize(value_thefile)
d.update({key_size:value_thefile})
print d
字典
d
对于外部for
循环的每次迭代,都将设置为一个新的空dict。即它不断被重新初始化为{}
:
for (dirname, dirs, files) in os.walk('.'):
d = dict() # this makes d == {} for each iteration of os.walk('.')
for filename in files:
...
相反,在循环外部初始化它,如下所示:
d = dict() # this makes d == {} only at the start
for (dirname, dirs, files) in os.walk('.'):
for filename in files:
... # rest of your code
因为你在外循环的每次迭代中都给它分配了一个空字典。。。?这就是
d=dict()
所做的。如@jpmc26所示,尝试将d=dict()
指令放在第一个循环之前。