Fungsi open()_ mengembalikan objek file, yang memiliki metode read() untuk membaca konten file
Jika file berada di lokasi yang berbeda, Anda harus menentukan jalur file, seperti ini
Contoh
Buka file di lokasi yang berbeda
f = buka("D. \\myfiles\selamat datang. txt", "r")
cetak (f. Baca())
Baca Hanya Sebagian File
Secara default, metode read() mengembalikan seluruh teks, tetapi Anda juga dapat menentukan berapa banyak karakter yang ingin Anda kembalikan
Contoh
Kembalikan 5 karakter pertama dari file
f = open("demofile. txt", "r")
cetak (f. baca(5))
Baca Baris
Anda dapat mengembalikan satu baris dengan menggunakan metode readline()
Contoh
Baca satu baris file
f = open("demofile. txt", "r")
cetak (f. garis baca())
Dengan menelepon readline()_ dua kali, Anda dapat membaca dua baris pertama
Contoh
Baca dua baris file
f = open("demofile. txt", "r")
cetak (f. garis baca())
cetak (f. garis baca())
Dengan mengulangi baris file, Anda dapat membaca seluruh file, baris demi baris
Contoh
Ulangi file baris demi baris
f = open("demofile. txt", "r")
untuk x dalam f
cetak(x)
Tutup File
Merupakan praktik yang baik untuk selalu menutup file setelah selesai
Contoh
Tutup file ketika Anda selesai dengan itu
f = open("demofile. txt", "r")
cetak (f. garis baca())
f. menutup()
Catatan. Anda harus selalu menutup file Anda, dalam beberapa kasus, karena buffering, perubahan yang dilakukan pada file mungkin tidak ditampilkan hingga Anda menutup file
Menggores adalah teknik penting yang membantu kami mengambil data berguna dari URL atau file html yang dapat digunakan dengan cara lain. Artikel yang diberikan menunjukkan cara mengekstrak paragraf dari URL dan menyimpannya sebagai file teks
Modul Dibutuhkan
bs4. Beautiful Soup(bs4) adalah pustaka Python yang digunakan untuk mendapatkan data dari file HTML dan XML. Itu dapat diinstal sebagai berikut
pip install bs4urllib. urllib adalah paket yang mengumpulkan beberapa modul untuk bekerja dengan URL. Itu juga dapat diinstal dengan cara yang sama, sebagian besar dibangun di lingkungan itu sendiri
Ruang penyimpanan di hard drive saya sangat berharga dan saya tidak ingin mengunduh banyak data saat saya hanya akan memprosesnya menjadi sesuatu yang dapat dikelola
Terkadang kami dapat menempelkan URL ke pd.read_csv()_ atau xr.read_dataset() dan itu akan dengan senang hati membaca datanya. Misalnya, xarray menyertakan dukungan untuk mengakses beberapa, tetapi tidak semua, kumpulan data melalui HTTP
Posting ini akan menjelaskan satu solusi yang dapat Anda gunakan ketika hal-hal tidak kopasetik dan langsung menempelkan URL ke dalam xarray gagal. Saya akan menguraikan cara membaca data dari server web langsung ke Python, bahkan dari file zip, semuanya tanpa menulis apa pun ke disk
Ide dasarnya
Tujuannya adalah untuk mengakses data melalui HTTP atau FTP, yang menggunakan struktur permintaan dan tanggapan. Misalnya, kami dapat meminta konten URL dan server akan (semoga) mengirimkan kembali data tersebut kepada kami sebagai tanggapan. Inilah cara kerja struktur ini dalam paket urllib.request Python
- url='//google.com'. ini adalah URL yang ingin kami akses
- req=urllib.request.Request(url). membuat objek Permintaan yang menentukan URL yang kita inginkan
- resp=urllib.request.urlopen(resp). mengembalikan objek respons dari server untuk URL yang diminta
- data=resp.read(). objek respons (resp_) seperti file, yang berarti kita dapat membacanya
Sekarang mari terapkan ide dasar ini ke beberapa data nyata
Membaca data dari URL
Kode di bawah ini mengakses suhu udara tahun tertentu dari analisis ulang NCEP. Saya selalu lebih suka menggunakan pengelola konteks saat membuka URL, jadi saya tidak lupa menutupnya
Baris terakhir pada kode ini mengembalikan kumpulan data xarray dengan data kami. Namun, jalur itu agak sibuk, mari kita bongkar
- resp.read(). adalah data yang kami minta. Namun, itu dalam byte
- pd.read_csv()0. Menyimpan data yang kami minta sebagai byte dalam buffer dalam memori
- pd.read_csv()1. membuka file byte sebagai kumpulan data xarray. Saya bisa melakukannya karena URL yang saya minta adalah file NetCDF
Ini bagus. Dengan sedikit usaha, kami dapat membaca data ke dalam memori tanpa mengunduhnya
Catatan
Jika Anda mendapatkan pesan kesalahan yang mengatakan "tidak dapat membuka NetCDF sebagai byte", maka Anda perlu menginstal h5netcdf
conda install -c conda-forge h5netcdf_Bagaimana jika datanya di-zip?
Tidak masalah, paket Python pd.read_csv()_2 bisa mengatasinya. Dalam kode di bawah ini saya meminta file zip dari server. Saya kemudian menggunakan paket pd.read_csv()_2 untuk membuat daftar file di dalamnya. Secara khusus, saya menggunakan metode pd.read_csv()_4. Terakhir, saya menggunakan xarray untuk membaca isi salah satu file NetCDF yang ada di dalamnya ke dalam sebuah dataset
Kesalahan HTTP 403. Terlarang
Jika Anda pernah meminta akses dan mendapatkan pesan kesalahan ini, itu berarti server mengetahui bahwa Anda mencoba mengaksesnya dari suatu program. Namun, kami lebih pintar dari komputer dan dapat menipunya dengan berpikir bahwa kami adalah browser web. Ini dapat dilakukan dengan melampirkan User-Agent ke permintaan kami sehingga terlihat seperti berasal dari browser web. Sebagai analogi, ini seperti mengetuk pintu dan mengumumkan siapa diri kita. Melampirkan User-Agent yang berbeda sama dengan meniru seseorang yang bukan kita
Di mana Anda mendapatkan URL data?
Ketika Anda menemukan dataset di web biasanya akan ada tombol untuk mengunduh dataset. Kami ingin mengetahui URL yang menautkan ke data itu. Di sebagian besar browser, Anda dapat mengeklik kanan dan pada tautan unduhan dan “Salin Alamat Tautan. ” Ini adalah contoh menggunakan browser Brave untuk mendapatkan tautan ke kumpulan data oseanografi
Pikiran terakhir
Pendekatan ini dapat merampingkan alur data dan membuat kode Anda mudah direproduksi oleh orang lain. Namun, ada beberapa kekurangan. Misalnya, Anda tidak akan dapat mengakses data jika server sedang down. Pendekatan ini mungkin tidak berfungsi di semua situasi, seperti jika kumpulan data terlalu besar untuk dimasukkan ke dalam memori. Saya belum mengalami masalah apa pun, tetapi saya tidak yakin seberapa baik pendekatan ini akan berhasil untuk kumpulan data besar yang masih dapat masuk ke dalam memori
Secara keseluruhan, saya menemukan ini sebagai cara bersih untuk membuat kode saya dapat direproduksi oleh peneliti lain. Manfaatnya adalah saya tidak mengandalkan mereka untuk mengunduh data terlebih dahulu. Paling tidak ini adalah trik lain untuk ditambahkan ke kotak peralatan Anda