2012-04-29 29 views
0

テキストファイルに書き込んだ内容を読み込めないのはなぜですか?コードにエラーは表示されませんが、ドキュメントに書き込んだ内容を読み取ることができません。もし誰かがこれを理解するのを助けることができたら、それはすばらしいことになるでしょう。私は道によって、プログラミングに新しいですので、私を許して、これは簡単なproblem.Iは、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() 

答えて

3

を使用していている場合は、ファイルの開始にファイルポインタをリセットするためにtarget.seek(0)を行う必要がありますtarget.read()の前に

+0

助けてくれてありがとう。 – Valleyvizor

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()) 

私もopening filesためthe with statementを使用しています:それはあなたが手動で切り捨てるとバック模索する必要がなくなりました。より多くのpythonicで読めるだけでなく、例外が発生しても、あなたのために処理を終了します。

これは、書き込みが改行を追加しないため、現時点ではすべてが1行に出力され、raw_input()はそれを継続させる改行をユーザーに与えるものではありません。そのように、あなたはおそらく、それらを追加したい我々はまた、私たちのすべての入力を連結し、単一の文字列で単一write()コマンドを使用することができます。ここでは

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

が、私は入力のリストを構築するためにa list comprehensionを使用しますライン。つまり、時間がかかるline_x = raw_input(prompt)を書き出す必要はなく、使用するライン数を簡単に変更することができます。また、私たちが望む改行を簡単に追加してstr.join()を追加することもできます。

+0

よく考え抜かれた説明をありがとう。私はかろうじてPythonを学んでおり、あなたが本当に助けたように説明しています。 – Valleyvizor

関連する問題