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

Да, если такая точность требуется, используют System.nanoTime(), но знают, что Вы тогда требуете Java 5 + JVM.

В моих системах XP, я вижу системное время, которое, как сообщают, по крайней мере <ударило> 100 микросекунд 278 наносекунды использование следующего кода:

private void test() {
    System.out.println("currentTimeMillis: "+System.currentTimeMillis());
    System.out.println("nanoTime         : "+System.nanoTime());
    System.out.println();

    testNano(false);                                                            // to sync with currentTimeMillis() timer tick
    for(int xa=0; xa<10; xa++) {
        testNano(true);
        }
    }

private void testNano(boolean shw) {
    long strMS=System.currentTimeMillis();
    long strNS=System.nanoTime();
    long curMS;
    while((curMS=System.currentTimeMillis()) == strMS) {
        if(shw) { System.out.println("Nano: "+(System.nanoTime()-strNS)); }
        }
    if(shw) { System.out.println("Nano: "+(System.nanoTime()-strNS)+", Milli: "+(curMS-strMS)); }
    }
94
задан bobince 8 September 2009 в 11:53
поделиться

4 ответа

На самом деле самый простой способ:

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("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

101
ответ дан 24 November 2019 в 06:05
поделиться
import urllib2
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"):
    print line
10
ответ дан 24 November 2019 в 06:05
поделиться
import urllib2

f = urllib2.urlopen(target_url)
for l in f.readlines():
    print l
6
ответ дан 24 November 2019 в 06:05
поделиться

На самом деле нет необходимости читать построчно. Вы можете получить все это так:

import urllib
txt = urllib.urlopen(target_url).read()
23
ответ дан 24 November 2019 в 06:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: