Pertanyaan Dalam Python, diberikan URL ke file teks, apa cara paling sederhana untuk membaca isi file teks?


Dalam Python, ketika diberikan URL untuk file teks, apa cara paling sederhana untuk mengakses konten dari file teks dan mencetak isi file secara lokal baris demi baris tanpa menyimpan salinan lokal dari file teks?

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

75
2017-09-08 10:56


asal


Jawaban:


Sebenarnya cara paling sederhana adalah:

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

Anda bahkan tidak perlu "readlines", seperti yang disarankan Will. Anda bahkan bisa mempersingkatnya

import urllib2

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

Tetapi ingat dengan Python, hal-hal yang mudah dibaca.

Namun, ini adalah cara yang paling sederhana tetapi bukan cara yang aman karena sebagian besar waktu dengan pemrograman jaringan, Anda tidak tahu apakah jumlah data yang diharapkan akan dihormati. Jadi biasanya Anda lebih baik membaca jumlah data yang tetap dan wajar, sesuatu yang Anda tahu cukup untuk data yang Anda harapkan tetapi akan mencegah skrip Anda dari banjir:

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

Edit 09/2016: Dalam python 3 dan lebih banyak digunakan urllib.request bukannya urllib2


84
2017-09-08 11:04



Benar-benar tidak perlu membaca baris demi baris. Anda bisa mendapatkan semuanya seperti ini:

import urllib
txt = urllib.urlopen(target_url).read()

22
2017-09-08 20:55



Saya seorang pemula untuk Python dan komentar begitu saja tentang Python 3 dalam solusi yang diterima membingungkan. Untuk anak cucu, kode untuk melakukan ini dengan Python 3 adalah

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

for line in data:
    ...

atau alternatifnya

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

Perhatikan itu saja import urllib tidak bekerja.


12
2017-09-08 21:33



import urllib2
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"):
    print line

10
2017-09-08 11:02



import urllib2

f = urllib2.urlopen(target_url)
for l in f.readlines():
    print l

6
2017-09-08 10:59



Itu meminta pustaka memiliki antarmuka yang lebih sederhana dan bekerja dengan Python 2 dan 3.

import requests

response = requests.get(target_url)
data = response.text

4
2018-06-19 16:39



Cara lain dalam Python 3 adalah menggunakan paket urllib3.

import urllib3

http = urllib3.PoolManager()
response = http.request('GET', target_url)
data = response.data.decode('utf-8')

Ini bisa menjadi pilihan yang lebih baik daripada urllib karena urllib3 membanggakan

  • Keamanan benang.
  • Penggabungan koneksi.
  • Verifikasi SSL / TLS sisi klien.
  • Unggahan file dengan encoding multi-halaman.
  • Pembantu untuk mencoba kembali permintaan dan menangani pengalihan HTTP.
  • Dukungan untuk pengkodean gzip dan deflate.
  • Dukungan proxy untuk HTTP dan SOCKS.
  • Cakupan tes 100%.

0
2018-06-19 16:27