使用python在线阅读大文

时间:2017-04-18 13:16:06

标签: python streaming python-textprocessing

我必须阅读50 GB的文本文件。我必须对该文件进行一些处理。因为我在远程服务器上进行处理,所以无法下载文本文件。是否可以使用Python使用其URL来流式传输文件内容并逐行读取?

2 个答案:

答案 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