あなたはファイル全体を読み、行を分割することができますstr.splitlines
:
temp = file.read().splitlines()
または、手動で改行を取り除くこともできます。
temp = [line[:-1] for line in 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]
または、strip
代わりに改行を使用するという簡単な方法もあります。
[line.rstrip('\n') for line in file]
または、かなり読めなくても、
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
これは、の戻り値がor
ブール値ではなく、trueまたはfalseと評価されたオブジェクトであるという事実を利用しています。
このreadlines
メソッドは実際には以下と同等です。
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
readline()
改行を保持するので、改行もreadlines()
保持します。
注:への対称性のために方法がないではない改行を終了追加し、これの正確なコピー生成では。readlines()
writelines()
f2.writelines(f.readlines())
f
f2
[l.strip('\n\r') for l in temp]
。またはrstrip
。そして、ここでの反復なので、のin open
代わりにすることができますin temp
。