2013-02-01 5 views
0

파이썬에서 요청을 보내서 웹 페이지 소프트웨어를 테스트하고 있습니다. 요청을 보내고 응답을 받고 json을 구문 분석 할 수 있습니다. 그러나 웹 페이지의 한 가지 옵션은 파일을 다운로드하는 것입니다. 다운로드 요청을 보내고 응답 헤더에 예상 한 내용 (application/octet-stream 및 해당 파일 이름)이 포함되어 있는지 확인할 수 있지만 Content-Length는 0입니다. 길이가 0이면 파일이 실제로 전송되지 않았다고 가정합니다. 다른 방법으로 파일을 다운로드 할 수있어서 소프트웨어가 작동한다는 것을 알지만 파이썬에서 작동하도록하는 데 문제가 있습니다.urllib로 첨부 파일 받기 - Python

다른 방법이 있나요 (I는 "B '를'"참조)

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

내가 데이터를 f.body에있을 것으로 예상하지만 비어 : 다음 요청을 구축

가 할 파이썬의 첨부 파일에서 파일 내용에 접근하고 싶습니까?

+0

요청 개체로 다시 작성하는 이유는 무엇입니까? 왜'body = f.read()'가 아니라고할까요? – hughdbrown

+0

나는 모든 정보를 가진 하나의 객체를 호출하는 함수로 간단히 반환 할 수 있도록 객체에 다시 씁니다. 호출 함수가 f.read()를 수행한다고 가정합니다 .... – Kreuzade

답변

0

밝혀졌습니다. 몸에 무언가를 갖기 위해 파일에 데이터를 넣어야했습니다. 나는 이것을 훨씬 더 빨리 알아야했다.

4

파이썬의 첨부 파일에서 파일 내용에 액세스하는 다른 방법이 있습니까?

python-requestsurllib에 있습니다.

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

관련 문제