Aşağıdakileri kullanarak tüm dosyayı okuyabilir ve satırları bölebilirsiniz str.splitlines
:
temp = file.read().splitlines()
Veya satırsonu satırını elle kapatabilirsiniz:
temp = [line[:-1] for line in file]
Not: Bu son çözüm yalnızca dosya yeni satırla bitiyorsa çalışır, aksi takdirde son satır bir karakteri kaybeder.
Bu varsayım genellikle özellikle metin editörleri tarafından oluşturulan dosyalar için çoğu durumda (içinde geçerlidir do zaten bir bitiş yeni satır ekleyin).
Bundan kaçınmak istiyorsanız, dosyanın sonuna yeni satır ekleyebilirsiniz:
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]
Ya da strip
bunun yerine yeni satıra daha basit bir alternatif :
[line.rstrip('\n') for line in file]
Ya da oldukça okunamaz olmasına rağmen:
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
Bu, dönüş değerinin or
bir boolean değil, doğru veya yanlış olarak değerlendirilen nesneden yararlanır.
readlines
Yöntem aslında eşdeğerdir:
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
Çünkü readline()
yeni satır da readlines()
tutar.
Not: için simetri için yöntemiyle yok değil yeni satır biten eklemek, bu nedenle tam bir kopyasını üretir içinde .readlines()
writelines()
f2.writelines(f.readlines())
f
f2
[l.strip('\n\r') for l in temp]
. Hattarstrip
. Ve burada yinelemeden beriin open
bunun yerine olabilirin temp
.