2017-05-27 5 views
0

Pythonを今すぐ学びます。 私は以下のプログラムを持っています。Python - いつファイルに書き込むのですか

  1. 最後の行以降に何も印刷されないのはなぜですか? "target"には書き込まれた値がありません。 (私は実際のファイルを開いた場合でも、値がない 理由がある?

  2. 私は、ファイルがその行までに書き込まれません考える「target.close」の上に、その行を追加してみました。 "target.close"の目的は何ですか?

  3. "target.truncate()"はすぐに反映されます。そのコマンドの後、スクリプトは入力に対して一時停止します私がファイルを開くと、消去されたすべてのデータが消去されていることがわかります。

from sys import argv 
script, filename = argv 

print (f"We are going to erase {filename}") 
print ("If you don't want that, press CTRL + C") 
print ("if you want that, press ENTER") 
input("? ") 

print("Opening the file.......") 
target = open(filename,"w+") 

print("Truncating the file....") 
target.truncate() 
print("Finished Truncating") 

print("Gimme 3 lines...") 

Line1 = input("Line 1: ") 
Line2 = input("Line 2: ") 
Line3 = input("Line 3: ") 

print("Writing these lines to the file") 

target.write(Line1 + "\n") 
target.write(Line2 + "\n") 
target.write(Line3 + "\n") 


print ("Finally, we close it") 
target.close 

input("Do you want to read the file now?") 
print(target.read()) 
+4

'target.close'はファイルを閉じません。 'target.close()'はそうです。 –

答えて

0

ソリューション

target.closeは括弧が欠落している、すなわち、それはtarget.close()する必要があります。

あなたの意図を見ると、すぐにtarget.read()も試みているので、target.flush()をやりたいと思うようです。あなたがそれを閉じた場合、ファイルから読むことができません。それはデフォルトではファイルに書き込まれたデータの一定量を

が起こるのはなぜ

は、実際にバッファに格納された - メモリに - それは実際にファイルに書き込まれる前に。ファイルをすぐに更新するには、flushメソッド(target.flush())を呼び出す必要があります。target.close()を呼び出すと自動的にバッファリングされたデータがフラッシュされます。なぜtarget.close()target.flush()のようなファイルを更新します。

2
target.close 

()コール括弧が欠落しています。それが何も書かれていない理由です。あなたがファイルを読みたい場合は

その後、あなたはそれを再開する必要があります。

print(open(filename).read()) 
関連する問題