2017-12-22 17 views
1

以下のファイルへの書き込みタスクを、Pythonで簡単にまたは片手で実行するにはどうすればよいですか?Pythonでファイルに書き込む単一のライナー

#[PYTHON] 
>>> log="/tmp/test_write.log" 
>>> file = open(log, "a") 
>>> file.write("x" * 10) 
>>> file.write("\n") 
>>> file.close() 

pythonにはこのような(bash/shell)がありますか?

#[SHELL] 
log="/tmp/test_write.log" 
printf "`printf 'x%0.s' {1..10}`\n" >> $log 

注: - 私はPythonで総noobieよ... OSはRHEL 6/7 &あるのPython 3.3

+4

'オープンで( "を/ tmp/test_write.log"、 'A'):以下のようなファイルへ

書き込み/追加\ n ")' – khelwood

+0

@khelwoodあなたはそれを回答として投稿できますか? – Marcos

+0

他の人がそれをカバーしています。 – khelwood

答えて

4

あなたはwritecloseを呼び出す必要があるので、1行だけを記述するだけ(完全に正気ではない)方法はによって2つのコマンドを分離することです、これは恐ろしいです。

あなたはwith文で読める2ライナーを書くことができます:

with open("/tmp/test_write.log", "a") as log: 
    log.write("x"*10 + '\n') 

ファイルは、コンテキストマネージャであり、with文を使用すると、あなたがブロックを終了したら、ファイルが閉じられることを保証します。

+0

pythonの方法ではありませんが、 'with'と' write'を1行に書くことができます。 – Raf

2
with open('file', 'w') as pf: 
    pf.write('contents\n') 

一行は、それが使用することを完全に罰金ですが、重要な場合:

with open('file', 'w') as pf: pf.write('contents\n') 
2

あなたはまた、ファイルオブジェクトが正常にwrite()メソッドが含まれているためprint

を使用することによってこれを行うことができ、あなたがする必要があるのは、その引数にファイルオブジェクトを渡すことです。 f.write( "X" * 10 +」:Fなど

with open("/tmp/test_write.log", 'a') as f: 
    print("x"*10, file=f) 
+1

それはなぜ私がこの方法を好むbtwです。私は改行をハードコードするのが好きではありません。 –

関連する問題