我在寫一個Python腳本,它使用ftplib
模塊從ftp位置下載文件。我下載的文件具體命名爲whatsnew.txt
,位於{ftp location}/{folder}/{subfolder}
之內,並且有很多這樣的文件夾,我下載了位於其中的所有whatsnew.txt
。字典python中意外的額外ghost值
我這樣做的方式是,在下載之前,我收集了ftp位置的目錄樹,並將其存儲爲字典(我還將此字典格式化爲json文件,並保存在名爲directory_tree.txt
)。
現在,當我解析此字典以獲取{文件夾}和{子文件夾}的值時,字典中會出現意外的額外值,具體如圖所示/318/08
。 318
是文件夾,08
是子文件夾。我不知道這個幽靈入口來自哪裏。
這是出乎意料的,因爲這是有問題的文件夾的樣子:
沒有frickin' 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)
另外,我很害怕。
此代碼看起來無害。我會首先查看'directory_tree'字典成員中的子文件夾列表。添加前導零的要求看起來很奇怪 - 如果您沒有從實際的FTP服務器列表中填充子文件夾列表,更有理由認爲此代碼存在錯誤,而不是您向我們展示的代碼。也許第一個循環的輸出也會有幫助 - 再次,'str()'調用看起來很可疑。爲什麼這些東西不是已經存在的? – tripleee
自問題解決以來,我發佈了一個答案。順便說一下,你指出的具有'str()'的部分僅用於調試目的,並且對數據沒有影響。雖然我意識到使用'str()'是多餘的:) – jowayow