saya menggunakan f.writelines (str (x)) untuk menulis ke dalam file di mana x adalah daftar untuk sekarang memberitahu cara menulis daftar x ke dalam file mengatasi setiap daftar mulai dari baris baru
kaushik
2
@kaushik: f.write ('\ n'.join (x)) atau f.writelines (i +' \ n 'for i in x)
Steven
Saya pikir metode f.write lebih baik karena dapat digunakan dalam Python 2 dan 3.
Anda dapat menggunakan penggunaannya, misalnya, ketika Anda menulis int ke file, Anda dapat menggunakan file.write (str (a) + '\ n')
未来 陆家嘴 顶尖 的 投资
@xikhari Kenapa? file.write(f"my number is: {number}\n")baik dan enak dibaca.
Guimoute
25
Jika Anda menggunakannya secara luas (banyak baris tertulis), Anda dapat mensubklasifikasikan 'file':
class cfile(file):#subclass file to have a more convienient use of writelinedef __init__(self, name, mode ='r'):
self = file.__init__(self, name, mode)def wl(self, string):
self.writelines(string +'\n')
Sekarang ia menawarkan fungsi tambahan wl yang melakukan apa yang Anda inginkan:
fid = cfile('filename.txt','w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()
Mungkin saya kehilangan sesuatu seperti karakter baris baru yang berbeda (\ n, \ r, ...) atau bahwa baris terakhir juga diakhiri dengan baris baru, tetapi itu berfungsi untuk saya.
Anda tidak perlu return Nonedalam hal ini karena pertama, Anda tidak memerlukannya dan kedua, setiap fungsi Python kembali Nonesecara default ketika tidak ada returnpernyataan.
Anna
10
Anda bisa melakukan:
file.write(your_string +'\n')
seperti yang disarankan oleh jawaban lain, tetapi mengapa menggunakan penggabungan string (lambat, rawan kesalahan) saat Anda dapat menelepon file.writedua kali:
file.write(your_string)
file.write("\n")
perhatikan bahwa menulis buffered sehingga jumlah yang sama.
Membuka file dengan "a" sebagai parameter alih-alih "w" tidak mengubah fungsi tulis agar berfungsi seperti yang Anda gambarkan. Satu-satunya efek yang dimilikinya adalah bahwa file tidak akan ditimpa dan teks akan ditambahkan ke baris paling bawah alih-alih dimulai dari kiri atas file kosong.
demokrat
2
Hanya sebuah catatan, filetidak didukung Python 3dan dihapus. Anda dapat melakukan hal yang sama dengan openfungsi bawaan.
Ini adalah solusi yang saya buat untuk mencoba memecahkan masalah ini sendiri untuk menghasilkan secara sistematis sebagai pemisah. Itu menulis menggunakan daftar string di mana setiap string adalah satu baris file, namun tampaknya itu dapat bekerja untuk Anda juga. (Python 3. +)
#Takes a list of strings and prints it to a file.def writeFile(file, strList):
line =0
lines =[]while line < len(strList):
lines.append(cheekyNew(line)+ strList[line])
line +=1
file = open(file,"w")
file.writelines(lines)
file.close()#Returns "\n" if the int entered isn't zero, otherwise "".def cheekyNew(line):if line !=0:return"\n"return""
Kenapa tidak sederhana saja with open(path, "w") as file: for line in strList: file.write(line + "\n")? Dengan cara ini Anda dapat menghapus semua pekerjaan daftar, cek, dan hanya memiliki 3 baris.
file.write(f"{var1}\n")
Anda dapat melakukan ini dengan dua cara:
atau, tergantung pada versi Python Anda (2 atau 3):
sumber
Kamu bisa memakai:
sumber
file.write(f"my number is: {number}\n")
baik dan enak dibaca.Jika Anda menggunakannya secara luas (banyak baris tertulis), Anda dapat mensubklasifikasikan 'file':
Sekarang ia menawarkan fungsi tambahan wl yang melakukan apa yang Anda inginkan:
Mungkin saya kehilangan sesuatu seperti karakter baris baru yang berbeda (\ n, \ r, ...) atau bahwa baris terakhir juga diakhiri dengan baris baru, tetapi itu berfungsi untuk saya.
sumber
return None
dalam hal ini karena pertama, Anda tidak memerlukannya dan kedua, setiap fungsi Python kembaliNone
secara default ketika tidak adareturn
pernyataan.Anda bisa melakukan:
seperti yang disarankan oleh jawaban lain, tetapi mengapa menggunakan penggabungan string (lambat, rawan kesalahan) saat Anda dapat menelepon
file.write
dua kali:perhatikan bahwa menulis buffered sehingga jumlah yang sama.
sumber
atau
sumber
Hanya sebuah catatan,
file
tidak didukungPython 3
dan dihapus. Anda dapat melakukan hal yang sama denganopen
fungsi bawaan.sumber
Kecuali menulis ke file biner, gunakan cetak. Contoh di bawah ini bagus untuk memformat file csv:
Pemakaian:
Catatan:
'{}, {}'.format(1, 'the_second')
- https://pyformat.info/ , PEP-3101*columns
dalam definisi fungsi - mengirimkan sejumlah argumen ke daftar - lihat pertanyaan pada * args & ** kwargssumber
Solusi lain yang menulis dari daftar menggunakan fstring
sumber
Ini adalah solusi yang saya buat untuk mencoba memecahkan masalah ini sendiri untuk menghasilkan secara sistematis sebagai pemisah. Itu menulis menggunakan daftar string di mana setiap string adalah satu baris file, namun tampaknya itu dapat bekerja untuk Anda juga. (Python 3. +)
sumber
with open(path, "w") as file: for line in strList: file.write(line + "\n")
? Dengan cara ini Anda dapat menghapus semua pekerjaan daftar, cek, dan hanya memiliki 3 baris.