Menulis daftar ke file dengan Python
Ini terbersih cara menulis daftar ke file, karena writelines()
doesn't menyisipkan karakter newline?
file.writelines(["%s\n" % item for item in list])
Sepertinya akan ada cara standar...
593
17
Anda dapat menggunakan loop:
Di Python 2, anda juga dapat menggunakan
Jika anda're tertarik pada satu fungsi panggilan, setidaknya menghapus tanda kurung siku
[]
, sehingga string yang akan dicetak bisa dibuat satu pada satu waktu (genexp daripada listcomp) - tidak ada alasan untuk mengambil semua memori yang diperlukan untuk mewujudkan seluruh daftar dari string.Apa yang akan anda lakukan dengan file? Apakah file ini ada untuk manusia, atau program lain dengan jelas interoperabilitas persyaratan?
Jika anda hanya mencoba untuk membuat daftar ke disk untuk kemudian digunakan oleh python app, anda harus pickleing daftar.
Untuk membacanya kembali:
Dengan cara sederhana ini:
lang-python outfile.write("\n".bergabung(itemlist))
Anda bisa memastikan bahwa semua item dalam daftar item adalah string menggunakan generator ekspresi:
lang-python outfile.write("\n".bergabung(str(item) untuk item dalam itemlist))
Ingat bahwa semua
itemlist
daftar harus berada dalam memori, sehingga, berhati-hati tentang konsumsi memori.Menggunakan Python 3 dan Python 2.6+ sintaks:
Ini adalah platform-independen. Hal ini juga mengakhiri akhir baris dengan karakter newline, yang merupakan UNIX praktek terbaik.
Namun cara lain. Cerita bersambung ke json menggunakan simplejson (termasuk json di python 2.6):
Jika anda memeriksa output.txt:
Hal ini berguna karena sintaks pythonic, it's yang dapat dibaca manusia, dan dapat dibaca oleh program lain dalam bahasa lain.
Saya pikir itu akan menarik untuk mengeksplorasi manfaat dari menggunakan genexp, jadi di sini's saya ambil.
Contoh pertanyaan yang menggunakan tanda kurung persegi untuk membuat daftar sementara, dan ini setara dengan:
Yang sia-sia membangun sebuah daftar sementara dari semua garis yang akan ditulis, hal ini dapat mengkonsumsi sejumlah besar memori tergantung pada ukuran daftar dan cara verbose output dari
str(item)
adalah.Drop kurung persegi (setara dengan melepas pembungkus
daftar()
sebut di atas) bukannya akan lulus sementara generator untukfile.writelines()
:Generator ini akan membuat baris baru-dihentikan representasi dari
item
benda on-demand (yaitu seperti yang tertulis out). Ini bagus untuk beberapa alasan:str(item)
lambat sana's kemajuan yang terlihat dalam file masing-masing item diprosesHal ini untuk menghindari masalah memori, seperti:
(Aku dipicu kesalahan ini dengan membatasi Python's max. virtual memori untuk ~100MB dengan
ulimit -v 102400
).Menempatkan penggunaan memori ke satu sisi, metode ini isn't benar-benar lebih cepat dari yang asli:
(Python 2.6.2 di Linux)
Karena saya'm malas....
Cerita bersambung daftar ke file teks dengan koma sepparated nilai
Secara Umum
Berikut adalah sintaks untuk writelines() metode
Contoh
Referensi
http://www.tutorialspoint.com/python/file_writelines.htm
Anda juga dapat menggunakan fungsi print jika anda're pada python3 sebagai berikut.
Mengapa don't anda mencoba
Logika ini pertama akan mengkonversi item dalam daftar untuk
string(str)
. Kadang-kadang daftar berisi tupel sepertiLogika ini akan menulis ke file setiap tupel pada baris baru. Kita kemudian dapat menggunakan
eval
saat loading masing-masing tuple ketika membaca file:Cara lain dari iterasi, dan menambahkan baris baru:
Cara Kerjanya: Pertama, buka file dengan menggunakan built-in fungsi terbuka dan menentukan nama file dan mode di mana kita ingin membuka file. Mode dapat baca mode ('r'), mode tulis ('w') atau append mode ('a'). Kita juga dapat menentukan apakah kita sedang membaca, menulis, atau menambahkan dalam mode teks ('t') atau biner mode ('b'). Sebenarnya ada banyak mode yang tersedia dan membantu(buka) akan memberikan rincian lebih lanjut tentang mereka. Secara default, buka() menganggap file ke menjadi 't'ext file dan membukanya di 'r'ead mode. Dalam contoh kita, pertama kita buka file dalam menulis teks modus dan menggunakan menulis metode dari objek file untuk menulis ke file dan kemudian kami akhirnya menutup file.
Contoh di atas adalah dari buku "Byte dari Python" oleh Swaroop C H. swaroopch.com
Biarkan avg bisa daftar, maka:
Anda dapat menggunakan
%e
atau%s
tergantung pada kebutuhan anda.