2

私がしたいこと:

  • テキストファイルを開く
  • 内容を読む
  • それにいくつかの変更を加えます
  • ファイルに書き戻す

これで、変更されたテキストには変更されたコンテンツのみが含まれ、最初のコンテンツは含まれなくなります。

functionで mode パラメータを設定するだけでこれを実装できますopen()か?

はいの場合、パラメータは何ですか?
いいえの場合、これを 1 つの with ステートメントだけで実装できますか?

私はこれを次のように2つのステートメントで実装します

replace_pattern = re.compile(r"<.+?>",re.DOTALL)

def text_process(file):

    with open(file,'r') as f:
        text = f.read()

    with open(file,'w') as f:
        f.write(replace_pattern.sub('',text))
4

1 に答える 1

3

ファイル内のテキストを「修正済み」バージョンに置き換えたい場合は、ファイルを再度開くか、r+(読み取り + 書き込み) モードで開き、書き込む前に切り詰める必要があります。

with open(file,'r+') as f:
    text = f.read()
    f.seek(0)
    f.truncate()
    f.write(replace_pattern.sub('',text))

最初にファイルを切り捨てないと、書き出す新しいバイト数が少なすぎるというリスクがあります。を読み込んfoo bar bazで書き出すと、古いデータが削除されずに長くなったためfoo spam、ファイルは終了します。foo spambaz

于 2013-03-09T15:38:56.083 に答える