Подтвердить что ты не робот

В Python, учитывая URL-адрес текстового файла, какой самый простой способ прочитать содержимое текстового файла?

В Python, когда задан URL-адрес текстового файла, какой самый простой способ получить доступ к содержимому из текстового файла и распечатать содержимое файла локально по очереди, не сохраняя локальную копию текста файл?

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

Ответ 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 не работает.