我必须阅读50 GB的文本文件。我必须对该文件进行一些处理。因为我在远程服务器上进行处理,所以无法下载文本文件。是否可以使用Python使用其URL来流式传输文件内容并逐行读取?
答案 0 :(得分: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
但请记住,在Python中,可读性很重要。
然而,这是最简单的方法,但不是安全的方式,因为大多数时候使用网络编程,您不知道是否会尊重预期的数据量。因此,您通常会更好地读取固定且合理数量的数据,您知道这些数据足以满足您期望的数据,但会阻止您的脚本被淹没:
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
在python 3及更高版本中使用urllib.request而不是urllib2
答案 1 :(得分:1)
您可以使用urllib2
,
urlopen
将像文件一样工作,文件是迭代器,每次产生1行,直到没有更多行生成。
import urllib2
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"):
print line