2009-03-11 6 views
0

私は、テキストファイルを編集し、それらのテキストファイルを使用する実行可能ファイルを実行するスクリプトを作成しようとしています。基本的には、1)テキストファイルの読み書きと、2)bashコマンドで書いたファイルの使用が必要です。それはjunk01.txtファイルの内容が表示されないことsubprocess.callコマンドのいくつかの理由についてpython:call.subprocessを使用してファイルを書き込んだ後の問題

import subprocess 

# write file 
a = ['1\n','2\n','3\n','4\n','5th and final line'] 
f = open('junk01.txt', 'wb') 
f.writelines(a) 
f.close 

# show file 
subprocess.call('cat junk01.txt', shell=True) 

:ここでは簡単な例です。しかし、私がこのコードを実行し、cat junk01.txtをbashに入力すると、ファイルは正しく書き込まれています。同様に、テキストファイルを開いて書き込んだり閉じたりしてから実行可能ファイルで使用しようとすると、そのファイルはまだ書き込まれていません。なぜこれが、私はそれを修正するために何ができるのかに関する説明?

答えて

9

実際にclose()メソッドを呼び出してファイルを閉じます。これにより、暗黙的にバッファがディスクにフラッシュされます。

f.close() 

ではなく

f.close  #this probably doesn't do anything, but if there was no close method it would raise an error. 
+0

これはすべて私の問題ですか?うわー、私は馬鹿のように感じる。私は試してみました。 これは、私が先週学習し始めた言語で何か複雑なことをしようとすることです...ありがとう! –

+0

「良く知られている」と思ってから数年後に出力を忘れてしまった。よくあるエラーだと思う。 –

+0

f.closeは何かします。私はクローズメソッド関数を探します。それを評価しませんが、少なくともそれを見つけます。 –

0

最初の答えは、ほとんど間違いなく正しいと適切ですが、あなたはまた、単になしにfを設定することができ代わりに、以下のように行われていたました:

import subprocess 

# write file 
a = ['1\n','2\n','3\n','4\n','5th and final line\n'] 
f = open('junk01.txt', 'wb') 
f.writelines(a) 
f = None 
# show file 
subprocess.call('cat junk01.txt', shell=True) 

fをNoneに設定すると、変数がサービスを停止し、ファイルが閉じられます。i (最初の好ましい例のように)明示的に閉じるのではなく暗黙的に 私はこのスタイルのコードを少しばかり書こうとは勧めていません。

[[email protected] ~/test/stack]$ python 1.py 
1 
2 
3 
4 
5th and final line 
[[email protected] ~/test/stack]$ 
関連する問題