2017-04-18 14 views
2

50GB의 텍스트 파일을 읽어야합니다. 그 파일을 가지고 약간의 처리를해야합니다. 원격 서버에서 처리하는 동안 텍스트 파일을 다운로드 할 수 없습니다. Python을 사용하여 URL을 사용하여 파일 내용을 스트리밍하고 한 줄씩 읽을 수 있습니까?파이썬을 사용하여 큰 텍스트 온라인 읽기

+0

온라인 파일에 액세스하는 데 사용하는 프로토콜은 무엇입니까? ftp? http? http 나 https라면'urllib2.urlopen()'을 사용하여 파일과 같은 객체를 얻고 그것을 한 줄씩 반복 할 수 있습니다. http/https로 시도했지만 ftp로는 작동하지 않을 수 있습니다. –

+0

살펴보기 : https://docs.python.org/2/library/io.html 또는 https://docs.python.org/2/library/stringio.html 및 https://docs.python.org /2/library/urllib.html – Dadep

+0

http를 사용하고 있으므로 urlilib2가 전체 파일을 열지 못합니까? – Noor

답변

1

사실 가장 간단한 방법은 다음과 같습니다

import urllib2 # the lib that handles the url stuff 

data = urllib2.urlopen(target_url) # it's a file like object and works just like a file 
for line in data: # files are iterable 
    print line 

당신은 심지어

import urllib2 

for line in urllib2.urlopen(target_url): 
    print line 

로 단축 그러나 파이썬, 가독성의 문제에 기억 할 수있다.

그러나 이것은 네트워크 프로그래밍으로 대부분의 경우 예상되는 데이터 양이 존중 될 것인지를 모르기 때문에 가장 안전한 방법은 아니지만 안전한 방법입니다. 그래서 당신은 일반적으로 더 나은 데이터의 고정 합리적인 금액을 읽을 것, 당신이 알고있는 당신이 기대하는 데이터를 충분히 할 수 있지만 범람에서 스크립트를 방지 할 수 있습니다 : 파이썬 3에서 사용까지

import urllib2 

data = urllib2.urlopen(target_url).read(20000) # read only 20 000 chars 
data = data.split("\n") # then split it into lines 

for line in data: 
    print line 

대신 urllib2가의 urllib.request

1
당신은 urllib2로 할 수있는

,

urlopen 파일 및 파일 등 작동 더 이상 라인 t이 없을 때까지 한 번에 한 라인을 산출 반복자는 수확량.

import urllib2 
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"): 
    print line