使用 python 在线阅读大文本
Read Big text online using python
我必须阅读一个 50 GB 的文本文件。我必须对该文件进行一些处理。我无法下载文本文件,因为我正在远程服务器上进行处理。是否可以使用 Python 使用其 URL 流式传输文件的内容并逐行读取?
其实最简单的方法是:
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
In python 3 and up use urllib.request instead of urllib2
您可以使用 urllib2
、
urlopen
将像文件一样工作,文件是迭代器,一次生成 1 行,直到没有更多行可以生成。
import urllib2
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"):
print line
我必须阅读一个 50 GB 的文本文件。我必须对该文件进行一些处理。我无法下载文本文件,因为我正在远程服务器上进行处理。是否可以使用 Python 使用其 URL 流式传输文件的内容并逐行读取?
其实最简单的方法是:
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
In python 3 and up use urllib.request instead of urllib2
您可以使用 urllib2
、
urlopen
将像文件一样工作,文件是迭代器,一次生成 1 行,直到没有更多行可以生成。
import urllib2
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"):
print line