在Python中,给定一个文本文件的URL,读取文本文件内容的最简单方法是什么?

在Python中,当给定文本文件的URL时,从文本文件访问内容并将文件内容逐行打印出来而不保存文本文件的本地副本的最简单方法是什么?

TargetURL=http://www.myhost.com/SomeFile.txt #read the file #print first line #print second line #etc 

其实最简单的方法是:

 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 

威尔build议,你甚至不需要“readline”。 你甚至可以缩短到

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

但请记住在Python中,可读性很重要。

然而,这是最简单的方法,但不是安全的方式,因为大部分时间与networking编程,你不知道数据量预期将被尊重。 所以你通常会更好地阅读一个固定的,合理的数据量,你知道对于你所期望的数据是足够的,但是会阻止你的脚本被淹没:

 import urllib2 data = urllib2.urlopen("http://www.google.com").read(20000) # read only 20 000 chars data = data.split("\n") # then split it into lines for line in data: print line 

编辑09/2016:在python3和使用urllib.request而不是urllib2

真的不需要逐行阅读。 你可以得到这样的事情:

 import urllib txt = urllib.urlopen(target_url).read() 
 import urllib2 for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"): print line 
 import urllib2 f = urllib2.urlopen(target_url) for l in f.readlines(): print l 

我是Python的新手,在接受的解决scheme中关于Python 3的非正式评论令人困惑。 为了后代,Python 3中的代码是

 import urllib.request data = urllib.request.urlopen(target_url) for line in data: ... 

或者可选地

 from urllib.request import urlopen data = urlopen(target_url) 

请注意,只是import urllib不起作用。