50GB의 텍스트 파일을 읽어야합니다. 그 파일을 가지고 약간의 처리를해야합니다. 원격 서버에서 처리하는 동안 텍스트 파일을 다운로드 할 수 없습니다. Python을 사용하여 URL을 사용하여 파일 내용을 스트리밍하고 한 줄씩 읽을 수 있습니까?파이썬을 사용하여 큰 텍스트 온라인 읽기
2
A
답변
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
온라인 파일에 액세스하는 데 사용하는 프로토콜은 무엇입니까? ftp? http? http 나 https라면'urllib2.urlopen()'을 사용하여 파일과 같은 객체를 얻고 그것을 한 줄씩 반복 할 수 있습니다. http/https로 시도했지만 ftp로는 작동하지 않을 수 있습니다. –
살펴보기 : 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
http를 사용하고 있으므로 urlilib2가 전체 파일을 열지 못합니까? – Noor