我試圖從FTP站點解壓文件。我已經在一個子進程中使用7z以及在較舊的os.system格式中使用7z。但是,當我在Python中使用zipfile模塊時,我得到了最接近的結果,所以我決定堅持這一點。無論我如何修改這個我似乎得到兩個錯誤,所以這裏的一個是他們兩個這樣你們能看到我敲我的頭撞在牆上:在Python中通過ftp解壓縮zip的問題
z = zipfile.ZipFile(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
z.extractall()
NotImplementedError:壓縮型6(爆) (我覺得這個是完全錯誤的,但想我會包括)
我似乎得到最接近的有以下:
z = zipfile.ZipFile(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
z.extractall(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
IOError: [Errno 2] No such file or directory: '\\\\svr-dc...'
與此美中不足的是,它實際上是給我拉鍊中的第一個文件名。我可以在錯誤結束時看到文件AJ07242013.PRN,因此我感覺更接近,因爲它至少可以讀取zip文件的內容。
幾乎任何迭代,我嘗試讓我這兩個錯誤之一,或語法錯誤,但這很容易解決,而不是我的主要關切。
對不起,這麼長時間囉嗦。我很樂意讓這個工作,所以讓我知道你認爲我需要做什麼。
編輯:
所以7Z終於被添加到路徑並沒有與兩個子以及使用os.system任何錯誤運行通過。不過,我仍然無法解開任何東西。在我看來,從我讀過的所有python文檔中,我應該使用subprocess.communicate()模塊來提取此文件,但它不會解壓縮。當我使用os.system時,它一直告訴我它找不到檔案。
import subprocess
cmd = ['7z', 'e']
sp = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
sp.communicate('r"\C:\Users\boster\Desktop\Data1.zip"')
我不認爲sp.communicate是正確的,但如果我添加任何東西到它,我有太多的爭論。
所以看來我得到一個「無法找到文件預期」的錯誤從子進程導入。在它失敗之前,我沒有經過這段代碼的第三行。 'import subprocess cmd = ['7z','e','Test.7z','Test','-mx9'] sp = subprocess.Popen(cmd,stderr = subprocess.STDOUT,stdout = subprocess.PIPE )「這似乎是在第三行失敗,甚至沒有進入功能。思考? – Benjooster
而且我知道實際的'7z e'是可以工作的,因爲它會在python之外的命令行中解壓縮項目。 – Benjooster
它應該工作......如果這是任何安慰!它是一個以「系統找不到預期的文件」結尾的python異常堆棧?這意味着它無法找到7z。它是否安裝正確?在你運行常規腳本的同一個地方,比如'subprocess.call(['7z'])'(它應該打印7z幫助)和'os.isfile('Test.7z ')'(它應該是真的)。最後你不需要-mx9,但我認爲這幾乎是無害的。 – tdelaney