В Python, учитывая URL-адрес текстового файла, какой самый простой способ прочитать содержимое текстового файла?
В Python, когда задан URL-адрес текстового файла, какой самый простой способ получить доступ к содержимому из текстового файла и распечатать содержимое файла локально по очереди, не сохраняя локальную копию текста файл?
TargetURL=http://www.myhost.com/SomeFile.txt
#read the file
#print first line
#print second line
#etc
Ответы
Ответ 1
На самом деле самый простой способ:
import urllib2 # the lib that handles the url stuff
data = urllib2.urlopen(target_url) # it a file like object and works just like a file
for line in data: # files are iterable
print line
Вам даже не нужны "readlines", как предложила Уилл. Вы могли бы даже сократить его до
import urllib2
for line in urllib2.urlopen(target_url):
print line
Но помните в Python, читаемость имеет значение.
Однако это самый простой способ, но не безопасный, потому что большую часть времени с помощью сетевого программирования вы не знаете, будет ли соблюдаться количество ожидаемых данных. Таким образом, вы, как правило, лучше читаете фиксированный и разумный объем данных, чего, как вы знаете, достаточно для ожидаемых данных, но предотвратите затопление вашего script:
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: В python 3 и используйте urllib.request вместо urllib2
Ответ 2
На самом деле нет необходимости читать строки за строкой. Вы можете получить все это так:
import urllib
txt = urllib.urlopen(target_url).read()
Ответ 3
import urllib2
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"):
print line
Ответ 4
import urllib2
f = urllib2.urlopen(target_url)
for l in f.readlines():
print l
Ответ 5
Я новичок в 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
не работает.