2017-01-07 76 views
1

我想從URL解壓縮文件,並堅持與下面的錯誤。我 將獲得URL的動態,所以路徑可能會保持不同。errno 22無效模式('rb'),而從url使用python解壓縮zip

[錯誤22]無效的模式( 'RB')或文件名: 'http://example.com/media/example.zip'

url = r"http://" + request.get_host() + uploaded_file_url 
    with zipfile.ZipFile(url, "r") as zip_ref: 
     zip_ref.extractall("c:/tmp") 
     zip_ref.namelist() 

以上是一段代碼,我使用的解壓縮。根據我的理解,預計是通過轉義字符,以便它可以讀取URL「IOError: [Errno 22] invalid mode ('r') or filename: 'c:\\Python27\test.txt'

我們如何做到這一點的URL。

+0

'ZipFile'預計文件在本地磁盤或內存中的數據,而不是URL。首先你必須從網上下載這個文件。 – furas

+0

我想我可能需要在本地下載文件,然後通過相同的, – arasub

+0

你必須下載文件和(a)保存在本地文件,然後使用ZipFile(b)或在內存中創建文件類對象(使用'io.StringIO'或'io.BytesIO'),填寫來自互聯網的數據,然後使用這個類似文件的對象與'ZipFile' – furas

回答

0

從網址讀取,我調用os.getcwd函數來獲取當前的工作目錄,並將其傳遞給zip函數來解壓縮,這工作。但是,如果文件名中有空格,則需要稍微調整代碼。

fullpath = os.getcwd()+ uploaded_file_url 
    fullpath = url.replace('/' , '\\') 
    with zipfile.ZipFile(fullpath , "r") as zip_ref: 
     zip_ref.extractall("c:/tmp") 
     zip_ref.namelist() 
相關問題