어떻게 읽을 선택한 파일에서 원격 Zip HTTP 를 통해 사용하는 파이썬?
문제
내가 읽을 필요가 선택한 파일에서 일치하는 파일의 이름,원격지에서 zip using Python.나는 원하지 않는 저장하는 전체 지 임시 파일(그것은 크고,그래서 내가 모든 것을 처리할 수 있는 메모리에서).
이미 작성한 코드를 작동하는지,그리고 나는 대답이 나는 나 자신 그래서 나를 검색할 수 있습니다.하지만 이후 증거는 나는 하나의 멍청 참가자에서 유래를,나의하실 수 있습니다.
해결책
여기에 어떻게 그것을 했(잡는 모든 끝나는 파일에서".순위"):
import urllib2, cStringIO, zipfile
try:
remotezip = urllib2.urlopen(url)
zipinmemory = cStringIO.StringIO(remotezip.read())
zip = zipfile.ZipFile(zipinmemory)
for fn in zip.namelist():
if fn.endswith(".ranks"):
ranks_data = zip.read(fn)
for line in ranks_data.split("\n"):
# do something with each line
except urllib2.HTTPError:
# handle exception
다른 팁
감사 Marcel 에 대한 질문과 답변(나 같은 문제를 가지고 있었습니다 다른 상황에서 발생했 같은 어려움으로 파일과 같은 개체는 정말 되는 파일과 같은)!다만으로 업데이트:파이썬 3.0 코드를 수정해야 합 약간:
import urllib.request, io, zipfile
try:
remotezip = urllib.request.urlopen(url)
zipinmemory = io.BytesIO(remotezip.read())
zip = zipfile.ZipFile(zipinmemory)
for fn in zip.namelist():
if fn.endswith(".ranks"):
ranks_data = zip.read(fn)
for line in ranks_data.split("\n"):
# do something with each line
except urllib.request.HTTPError:
# handle exception
이 일을 할 것입니다 다운로드하지 않고 전체 zip 파일!
곰 마음에는 단순히 압축 해제 ZIP 파일이 있는 결과 보안 취약점.
제휴하지 않습니다 StackOverflow