Apa cara terbaik untuk membuka file sebagai baca / tulis jika ada, atau jika tidak, lalu buat dan buka sebagai baca / tulis? Dari apa yang saya baca, file = open('myfile.dat', 'rw')
harus melakukan ini, kan?
Ini tidak berfungsi untuk saya (Python 2.6.2) dan saya bertanya-tanya apakah ini masalah versi, atau tidak seharusnya bekerja seperti itu atau apa.
Intinya adalah, saya hanya perlu solusi untuk masalah ini. Saya ingin tahu tentang hal-hal lain, tetapi yang saya butuhkan adalah cara yang baik untuk melakukan bagian pembuka.
Direktori terlampir dapat ditulisi oleh pengguna dan grup, bukan yang lain (saya menggunakan sistem Linux ... jadi izin 775 dengan kata lain), dan kesalahan sebenarnya adalah:
IOError: tidak ada file atau direktori tersebut.
sumber
file
ada.Jawaban:
Anda harus menggunakan
open
denganw+
mode:sumber
w
memotong file yang ada. docs: Mode'r+'
,'w+'
dan'a+'
buka file untuk memperbarui (catatan yang'w+'
memotong file).open('myfile.dat', 'w')
sudah cukup.Keuntungan dari pendekatan berikut adalah bahwa file ditutup dengan benar di ujung blok, bahkan jika ada pengecualian yang muncul. Ini setara dengan
try-finally
, tetapi jauh lebih pendek.metode seek () mengatur posisi file saat ini.
sumber
filename
?Praktik yang baik adalah menggunakan yang berikut ini:
sumber
Ubah "rw" menjadi "w +"
Atau gunakan 'a +' untuk menambahkan (tidak menghapus konten yang ada)
sumber
r + berarti membaca / menulis
sumber
Karena python 3.4 Anda harus menggunakan
pathlib
untuk "menyentuh" file.Ini adalah solusi yang jauh lebih elegan daripada yang diusulkan di utas ini.
Hal yang sama dengan direktori:
sumber
touch
tidak memperbarui waktu modifikasi terakhir saat digunakan.touch
di baris perintah di linux, jadi saya menganggap itu perilaku yang dimaksudkan.Jawabanku:
sumber
contoh:
Saya harap ini membantu. [FYI saya menggunakan python versi 3.6.2]
sumber
open('myfile.dat', 'a')
bekerja untuk saya, baiklah.di py3k kode Anda memunculkan
ValueError
:di python-2.6 itu memunculkan
IOError
.sumber
Menggunakan:
Catatan: File harus ditutup setelah Anda membukanya, dan manajer konteks with adalah cara yang bagus untuk membiarkan Python mengurus ini untuk Anda.
sumber
Apa yang ingin Anda lakukan dengan file? Hanya menulis untuk itu atau keduanya membaca dan menulis?
'w'
,'a'
akan memungkinkan menulis dan akan membuat file jika tidak ada.Jika Anda perlu membaca dari suatu file, file tersebut harus ada sebelum membukanya. Anda dapat menguji keberadaannya sebelum membukanya atau menggunakan coba / kecuali.
sumber
Saya pikir
r+
tidakrw
. Saya hanya pemula, dan itulah yang saya lihat di dokumentasi.sumber
Masukkan w + untuk menulis file, potong jika ada, r + untuk membaca file, buat satu jika tidak ada tetapi tidak menulis (dan mengembalikan nol) atau + untuk membuat file baru atau menambahkan ke yang sudah ada.
sumber
Jadi, Anda ingin menulis data ke file, tetapi hanya jika belum ada?
Masalah ini mudah diselesaikan dengan menggunakan mode x yang tidak diketahui untuk membuka () alih-alih mode w biasa. Sebagai contoh:
Jika file tersebut adalah mode biner, gunakan mode xb alih-alih xt.
sumber
Jika Anda ingin membukanya untuk membaca dan menulis, saya berasumsi Anda tidak ingin memotongnya saat Anda membukanya dan Anda ingin dapat membaca file setelah membukanya. Jadi ini solusi yang saya gunakan:
sumber
Mungkin ini akan membantu
impor modul os terlebih dahulu ke file py Anda
kemudian buat variabel bernama save_file dan atur ke file yang ingin Anda buat html atau txt dalam hal ini file txt
kemudian tentukan fungsi yang akan menggunakan metode file os.path.is untuk memeriksa apakah file itu ada dan jika tidak, ia akan membuat file
dan akhirnya panggil fungsinya
sumber
sumber