因此,我正在編寫一個腳本來下載文件,並在文件沒有完成時從其停止的地方重新開始下載。這部分照顧。權限在下載可執行文件時有時會被拒絕
我拿出所有這些部分出來只顯示不工作的部分。亞馬遜網址在這裏,我只是做了,所以它實際上不會下載任何東西,如果你運行它,但實際的下載鏈接更換網址,會:
import urllib
import time
import os
file_name = "setup.exe"
web_page = urllib.FancyURLopener().open("https://s3.amazonaws.com/some_bucket/files/"+file_name)
while True:
data = web_page.read(8192)
if not data:
print "done"
break
#print os.getcwd()
with open(file_name, "ab") as outputFile:
outputFile.write(data)
#print "going..."
#time.sleep(1)
會發生什麼事(這是隻有當試圖下載EXE文件),該過程將從web_page讀取一個看似隨機的次數(介於1和20ish之間),然後拋出IOError:13,Permission denied。同樣,使用.gif或.mov或我測試過的其他一些東西,拒絕錯誤的權限永遠不會拋出。
此外,取消註釋time.sleep(1)行可以解決問題。就好像with語句在繼續之前沒有完全關閉文件。
我以爲有聲明應該處理關閉,不是嗎?
我也認爲我的目前目錄正在改變,但取消註釋,從來沒有透露它(儘管通過相同的邏輯,它不一定必須)。
(奇怪的是,如果我在桌面上打開Aptana時從桌面運行此腳本(以便它也寫入桌面),拒絕權限錯誤將不會發生,但第二次我將文本編輯器專注於桌面,錯誤拋出 - 我將此歸因於Aptana在打開時佔用大量資源,因此減慢了另一個進程並且有點像time.sleep ??)
非常感謝任何指針。
可能是防病毒鬼混。 –
聽起來像Windows上的UAC,非管理級別的腳本不能產生需要管理員私有的進程 –
也'非常感謝任何指針.'這裏有一些0x005556c –