Anda dapat membaca seluruh file dan membagi baris menggunakan str.splitlines
:
temp = file.read().splitlines()
Atau Anda dapat menghapus baris baru dengan tangan:
temp = [line[:-1] for line in file]
Catatan: solusi terakhir ini hanya berfungsi jika file diakhiri dengan baris baru, jika tidak baris terakhir akan kehilangan satu karakter.
Asumsi ini benar dalam kebanyakan kasus (terutama untuk file yang dibuat oleh editor teks, yang sering melakukan menambahkan baris baru berakhir pula).
Jika Anda ingin menghindari ini, Anda dapat menambahkan baris baru di akhir file:
with open(the_file, 'r+') as f:
f.seek(-1, 2) # go at the end of the file
if f.read(1) != '\n':
# add missing newline if not already present
f.write('\n')
f.flush()
f.seek(0)
lines = [line[:-1] for line in f]
Atau alternatif yang lebih sederhana adalah ke strip
baris baru sebagai gantinya:
[line.rstrip('\n') for line in file]
Atau bahkan, meskipun sangat tidak terbaca:
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
Yang mengeksploitasi fakta bahwa nilai balik or
bukan boolean, tetapi objek yang dievaluasi benar atau salah.
The readlines
Metode ini sebenarnya setara dengan:
def readlines(self):
lines = []
for line in iter(self.readline, ''):
lines.append(line)
return lines
# or equivalently
def readlines(self):
lines = []
while True:
line = self.readline()
if not line:
break
lines.append(line)
return lines
Karena readline()
menyimpan baris baru juga readlines()
menyimpannya.
Catatan: untuk simetri ke readlines()
dalam writelines()
metode tidak tidak menambahkan berakhir baris, sehingga f2.writelines(f.readlines())
menghasilkan salinan dari f
dalam f2
.
[l.strip('\n\r') for l in temp]
. Atau bahkanrstrip
. Dan karena iterasi di sini bisain open
bukanin temp
.