2017-12-22 15 views
1

Wie führe ich die unten stehende Aufgabe zum Schreiben in Datei einfacher oder einzeiliger in Python aus?Einzeiler zum Schreiben in Datei in Python

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

Gibt es so etwas (Bash/Shell) in Python?

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

Hinweis: - ich insgesamt noobie in Python bin ... O ist RHEL 6/7 & Python 3,3

+4

'mit open ("/ tmp/test_write.log", 'a') als f: f.write ("x" * 10 +“ \ n ")' – khelwood

+0

@khelwood Kannst du das als Antwort posten? – Marcos

+0

Andere Leute haben es abgedeckt. – khelwood

Antwort

4

Da Sie anrufen müssen write und close, die einzige (nicht völlig verrückt) Art und Weise nur eine einzige Zeile zu schreiben ist, die beiden Befehle durch einzu trennen, das ist schrecklich zu lesen.

Sie können einen lesbaren Zweizeiler mit der with Anweisung schreiben:

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

Dateien sind Kontext-Manager und mit der with Anweisung stellen sicher, dass die Datei geschlossen wird, sobald Sie den Block verlassen.

+0

Auch wenn es nicht pythonischer Art ist, können Sie 'mit' und' schreiben' in einer Zeile haben. – Raf

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

Wenn eine Zeile wichtig ist, ist es völlig in Ordnung zu verwenden:

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

Sie können dies auch tun, indem print

mit Da normalerweise Dateiobjekt write() Methode enthält alles, was Sie tun müssen, ist ein Dateiobjekt in ihr Argument zu übergeben.

Write/Append in einer Datei wie unten:

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

Das ist übrigens warum ich diesen Weg bevorzuge. Ich möchte Zeilenumbrüche nicht hardcodieren. –