2013-02-01 39 views
0

我正在通過向python發送請求來測試我的網頁軟件。我能夠發送請求,接收響應並解析json。但是,網頁上的一個選項是下載文件。我發送下載請求並可以確認響應頭包含我期望的內容(應用/八位字節流和適當的文件名),但Content-Length爲0.如果長度爲0,則我認爲該文件沒有實際發送。我可以從其他方式下載文件,所以我知道我的軟件可以工作,但是我在使用python時遇到問題。使用urllib接收附件 - Python

我建立請求,那麼這樣做:

f = urllib.request.urlopen(request) 
f.body = f.read() 

我預計數據將在f.body但它是空的(我看「B‘’」)

是否有不同的方式從python中的附件訪問文件內容?

+0

你爲什麼把它寫回你的請求對象?爲什麼不'body = f.read()',說? – hughdbrown

+0

我將它寫回對象,以便我可以簡單地將包含所有信息的一個對象返回給調用函數。我想調用函數會導致f.read()... – Kreuzade

回答

0

原來我需要將一些數據放到文件中以便在文件中有東西。我應該早點注意到這一點。

4

有沒有不同的方式從python的附件訪問文件內容?

這是在python-requests而不是urllib,因爲我對此比較熟悉。

import requests 

url = "http://example.com/foobar.jpg" 

#make request 
r = requests.get(url) 
attachment_data = r.content 

#save to file 
with open(r"C:/pictures/foobar.jpg", 'wb') as f: 
    f.write(attachment_data) 
+0

謝謝。我現在嘗試上傳文件時可能會使用此模塊。 – Kreuzade

+0

@Kreuzade嗨,高興地幫忙!如果它適合你,不要忘記標記答案已被接受。 :) – TankorSmash