0

テキスト ファイルに書き込んだ内容を読み取れないのはなぜですか。コードにエラーは表示されませんが、ドキュメントに書き込んだ内容を読み取ることができません。誰かがこれを理解するのを手伝ってくれたら、それは素晴らしいことです。ところで、私はプログラミングに慣れていないので、これが単純な問題であれば許してください.私はPythonバージョン2.6.1を使用しています.

from sys import argv

script,file_name = argv
prompt = "> "

target = open(file_name, 'w+b')

print "press CRTL-C enter to escape this"
print "or press RETURN to continue"

raw_input(prompt)

print "Begin erasing stuff Goodbye!"
target.truncate()

print "we are going to start writing to file"

write_1 = raw_input(prompt)
write_2 = raw_input(prompt)
write_3 = raw_input(prompt)

target.write(write_1)
target.write(write_2)
target.write(write_3)

print target.read()


print "closing now!"
target.close()
4

2 に答える 2

3

target.seek(0)実行する前に、ファイル ポインタをファイルの先頭にリセットする必要がありますtarget.read()

于 2012-04-29T09:22:18.797 に答える
2

モードで開くとファイルが自動的に切り捨てられることに注意してください"w"。そのため、そのモードで開き、ファイルに書き込み、モードで開く方が簡単な場合があり"r"ます。つまり、手動で切り捨ててシークバックする必要がなくなりました。

from sys import argv

script, file_name = argv
prompt = "> "

print("Press CTRL+C to exit,")
print("or press RETURN to continue.")

raw_input(prompt)

print("Begin erasing.")
with open(file_name, 'wb') as target:
    print("Begin writing to file.")
    write_1 = raw_input(prompt)
    write_2 = raw_input(prompt)
    write_3 = raw_input(prompt)
    target.write(write_1)
    target.write(write_2)
    target.write(write_3)

with open(file_name, "rb") as target:
    print(target.read())

ファイルを開くステートメントも使用していwithます。Pythonic で読みやすいだけでなく、例外が発生した場合でもクローズを処理します。

raw_input()現時点では、書き込みは改行を追加せず、継続の原因となった改行を提供しないため、これによりすべてが 1 行に出力されることに注意してください。そのため、おそらくそれらを追加する必要があります。write()すべての入力から連結された単一の文字列を含む単一のコマンドを使用することもできます。

print("we are going to start writing to file")
data = [raw_input(prompt) for _ in range(3)]
target.write("\n".join(data))

ここでは、リスト内包表記を使用して入力行のリストを作成します。これは、何度も書き出す必要がなくline_x = raw_input(prompt)、使用する行数を簡単に変更できることを意味します。str.join()また、必要な改行を簡単に追加できることも意味します。

于 2012-04-29T09:54:01.577 に答える