for line in open('file.txt'):
print(re.sub('windows', 'linux', line))
またはテキストファイルを1行ずつ、または文字列全体として操作しますか?
print(re.sub('windows', 'linux', open('file.txt').read()))
より良いものですか?違いはありますか?
BTW。 regex
で巨大な文字列を操作するのは良い考えですか?
for line in open('file.txt'):
print(re.sub('windows', 'linux', line))
またはテキストファイルを1行ずつ、または文字列全体として操作しますか?
print(re.sub('windows', 'linux', open('file.txt').read()))
より良いものですか?違いはありますか?
BTW。 regex
で巨大な文字列を操作するのは良い考えですか?
多項式で述べたように、2番目の方法ではファイル全体がRAMに読み込まれます。これはRAMの方が良いかもしれません。
しかし、別の解決策があります:
with open('file.txt') as file:
for line in file:
print(re.sub('windows', 'linux', line))
これは、ファイルはもはやそれを必要としない直後に閉鎖されることを保証しますが。
Similiarly、
with open('file.txt') as file:
print(re.sub('windows', 'linux', file.read()))
も同様に使用することができます。
私の標準では最初の方が読みやすくなりますが、1行に1つのファイル読み取り操作が行われます。基本的にはメモリに応じてより効率的です(各行は1つのバッファを再割り当てし、ファイル全体をメモリにロードするだけです)。
2番目の方法は醜いですが、IO効率は向上します。
すべての場合、それほど大きな違いはありません。
ファイルを開いたままにする元のバージョンとは対照的に、この*を使用する必要があります。あるいは、追加のコード行が必要になります。それにもかかわらず、これはより読みやすくなります。 – rplnt