字典中意外的额外重影值 python
Unexpected extra ghost value in dictionary python
我正在编写一个 Python 脚本,它使用 ftplib
模块从 ftp 位置下载文件。我下载的文件特别命名为 whatsnew.txt
,位于 {ftp location}/{folder}/{subfolder}
内,有很多这样的文件夹,我下载了位于其中的所有 whatsnew.txt
。
我的做法是,在下载之前,我收集 ftp 位置的目录树的样子,并将其存储为字典(我也保存了这个字典,格式为 json 文件,在名为 directory_tree.txt
).
的输出文件中
现在,当我解析此字典以获取 {folder} 和 {subfolder} 的值时,字典中出现意外的额外值,特别是图中所示的 /318/08
。 318
是文件夹,08
是子文件夹。我不知道这个幽灵条目到底是从哪里来的。
这是意外的,因为这是有问题的文件夹的样子:
没有该死的 08
子文件夹。
这是我的代码片段 (Python 2.7.9),我认为我在其中出错了。我该如何解决我的错误?我如何解决这个额外的价值?我希望不需要驱魔。希望只是驱魔我的编程不足。谢谢。
for folder in directory_tree["ControlPatch_CPR"]: //Loop for checking dict entries
for subfolder in folder:
print str(folder) + " --- " + str(subfolder)
for folder in directory_tree["ControlPatch_CPR"]:
for subfolder in folder:
if len(subfolder) == 1:
subfolder = "0" + subfolder
ftp.cwd("/")
print "\nretrieving {0}/ControlPatch/{1}/{2}/whatsnew.txt ...".format(ftplocation, folder, subfolder)
with open("{0}.{1}.whatsnew.txt".format(folder, subfolder), "wb") as whatsnew:
ftp.cwd("/ControlPatch/{0}/{1}".format(folder, subfolder))
print "working directory: " + ftp.pwd()
ftp.retrbinary("RETR /ControlPatch/{0}/{1}/whatsnew.txt".format(folder, subfolder), whatsnew.write)
还有,我很害怕
我已经解决了(?)我的问题,尽管我无法解释它。从我上面贴出的代码,我改了一部分来自:
for folder in directory_tree["ControlPatch_CPR"]:
for subfolder in folder:
if len(subfolder) == 1:
至:
for folder in directory_tree["ControlPatch_CPR"]:
for subfolder in directory_tree["ControlPatch_CPR"][folder]:
if len(subfolder) == 1:
这部分 directory_tree["ControlPatch_CPR"][folder]
是一个列表,因此我认为 subfolder in folder
只是指 folder
作为相同的可迭代对象。有人关心解释吗?谢谢。
总之,问题解决了。呼。我现在可以 return 到我的电脑了。
我正在编写一个 Python 脚本,它使用 ftplib
模块从 ftp 位置下载文件。我下载的文件特别命名为 whatsnew.txt
,位于 {ftp location}/{folder}/{subfolder}
内,有很多这样的文件夹,我下载了位于其中的所有 whatsnew.txt
。
我的做法是,在下载之前,我收集 ftp 位置的目录树的样子,并将其存储为字典(我也保存了这个字典,格式为 json 文件,在名为 directory_tree.txt
).
现在,当我解析此字典以获取 {folder} 和 {subfolder} 的值时,字典中出现意外的额外值,特别是图中所示的 /318/08
。 318
是文件夹,08
是子文件夹。我不知道这个幽灵条目到底是从哪里来的。
这是意外的,因为这是有问题的文件夹的样子:
没有该死的 08
子文件夹。
这是我的代码片段 (Python 2.7.9),我认为我在其中出错了。我该如何解决我的错误?我如何解决这个额外的价值?我希望不需要驱魔。希望只是驱魔我的编程不足。谢谢。
for folder in directory_tree["ControlPatch_CPR"]: //Loop for checking dict entries
for subfolder in folder:
print str(folder) + " --- " + str(subfolder)
for folder in directory_tree["ControlPatch_CPR"]:
for subfolder in folder:
if len(subfolder) == 1:
subfolder = "0" + subfolder
ftp.cwd("/")
print "\nretrieving {0}/ControlPatch/{1}/{2}/whatsnew.txt ...".format(ftplocation, folder, subfolder)
with open("{0}.{1}.whatsnew.txt".format(folder, subfolder), "wb") as whatsnew:
ftp.cwd("/ControlPatch/{0}/{1}".format(folder, subfolder))
print "working directory: " + ftp.pwd()
ftp.retrbinary("RETR /ControlPatch/{0}/{1}/whatsnew.txt".format(folder, subfolder), whatsnew.write)
还有,我很害怕
我已经解决了(?)我的问题,尽管我无法解释它。从我上面贴出的代码,我改了一部分来自:
for folder in directory_tree["ControlPatch_CPR"]:
for subfolder in folder:
if len(subfolder) == 1:
至:
for folder in directory_tree["ControlPatch_CPR"]:
for subfolder in directory_tree["ControlPatch_CPR"][folder]:
if len(subfolder) == 1:
这部分 directory_tree["ControlPatch_CPR"][folder]
是一个列表,因此我认为 subfolder in folder
只是指 folder
作为相同的可迭代对象。有人关心解释吗?谢谢。
总之,问题解决了。呼。我现在可以 return 到我的电脑了。