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

新手上路,请多包涵

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

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

原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 323
2 个回答

编辑 09/2016:在 Python 3 及更高版本中使用 urllib.request 而不是 urllib2

其实最简单的方法是:

 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

正如 Will 所建议的,您甚至不需要“readlines”。您甚至可以将其缩短为: *

 import urllib2

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

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

然而,这是最简单的方法而不是安全的方法,因为在大多数情况下使用网络编程,您不知道是否会遵守预期的数据量。所以你通常最好读取固定且合理数量的数据,你知道这些数据足以满足你期望的数据但会防止你的脚本被淹没:

 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


\* Python 3 中的第二个示例:

 import urllib.request  # the lib that handles the url stuff

for line in urllib.request.urlopen(target_url):
    print(line.decode('utf-8')) #utf-8 or iso8859-1 or whatever the page encoding scheme is

原文由 e-satis 发布,翻译遵循 CC BY-SA 4.0 许可协议

我是 Python 的新手,在公认的解决方案中关于 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 不起作用。

原文由 Andrew Mao 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题