0

Django にファイルを追加して文字列置換を実行しようとしていますが、何らかの理由でファイルに書き込んでいません。読むのに問題はありません。

ビュー.py

with open('/home/me/dev/Django/rulebase/result.rb', 'a') as discover_reading:
    mydiscover = File(discover_reading)
    for line in mydiscover:
        line.replace('input = "', 'this')
    mydiscover.closed

ブラウザで次のエラーが表示されます。

Exception Type:     IOError
Exception Value:    

File not open for reading
4

2 に答える 2

1

以下は、ファイルの内容を置き換えます。

with open('/home/me/dev/Django/rulebase/result.rb', 'r') as discover_reading:
    lines = [line.replace('input = "', 'this') for line in discover_reading.readlines()]

with open('/home/me/dev/Django/rulebase/result.rb', 'w') as discover_reading:
    discover_reading.writelines(lines)

あなたの例はまったく機能ません。

ファイルオブジェクトstring.replaceのドキュメントを読んでください。Fileは組み込み関数ではなく、そのstr.replace場で置換しません (文字列は不変です) 。 は、開いているファイルを閉じるためではなくmydiscover.closed、ファイルが閉じられているかどうかを伝えるためのものです。

a追加を表すフラグを使用して開いたファイルから行を読み取ろうとしているため、元のエラーが発生しました。

于 2013-04-17T12:32:46.880 に答える
0

読み取るには、「r」フラグを使用して開く必要があります。

open('/home/me/dev/Django/rulebase/result.rb', 'r')
于 2013-04-17T12:18:14.197 に答える