Python 遍历目录并更新字典
Python iterating through directories and updating dictionary
字典 "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 = os.path.join(dirname,filename)
key_size = os.path.getsize(value_thefile)
d.update({key_size:value_thefile})
print d
字典 d
不断为外部 for
循环的每次迭代设置一个新的空字典。即它不断重新初始化为 {}
:
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" 仅包含最新的迭代子文件夹键和值,当我想添加所有文件夹时。我不明白为什么我的字典会在文件夹更改后从空字典开始更新。
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
循环的每次迭代设置一个新的空字典。即它不断重新初始化为 {}
:
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