Σωστός τρόπος για να γράψετε γραμμή στο αρχείο;

Έχω συνηθίσει να κάνω print >>f, "γεια σου"

Ωστόσο, φαίνεται ότι το print >> έχει ξεπεραστεί. Ποιος είναι ο συνιστώμενος τρόπος για να κάνετε την παραπάνω γραμμή;

Ενημέρωση: Όσον αφορά όλες αυτές τις απαντήσεις με "\n"... είναι αυτό καθολικό ή ειδικό για το Unix; IE, θα έπρεπε να κάνω το "\r\n" στα Windows;

Θα πρέπει να χρησιμοποιήσετε τη συνάρτηση print() η οποία είναι διαθέσιμη από την Python 2.6+.

from __future__ import print_function  # Only needed for Python 2
print("hi there", file=f)

Για την Python 3 δεν χρειάζεστε την import, αφού η συνάρτηση print() είναι η προεπιλεγμένη.

Η εναλλακτική λύση θα ήταν να χρησιμοποιήσετε:

f = open('myfile', 'w')
f.write('hi there\n')  # python will convert \n to os.linesep
f.close()  # you can omit in most cases as the destructor will call it

Παραθέτοντας από την τεκμηρίωση της Python σχετικά με τις νέες γραμμές:

Στην έξοδο, αν η newline είναι None, οι χαρακτήρες '\n' που γράφονται μεταφράζονται στον προεπιλεγμένο διαχωριστή γραμμών του συστήματος, os.linesep. Εάν η newline είναι '', δεν πραγματοποιείται καμία μετάφραση. Εάν η newline είναι οποιαδήποτε από τις άλλες νόμιμες τιμές, οι χαρακτήρες '\n' που γράφονται μεταφράζονται στη δεδομένη συμβολοσειρά.

Σχόλια (18)

Δεν νομίζω ότι υπάρχει ένας "σωστός" τρόπος.

Θα χρησιμοποιούσα:

with open ('myfile', 'a') as f: f.write ('hi there\n')

In memoriam Tim Toady.

Σχόλια (7)

Στην Python 3 είναι μια συνάρτηση, αλλά στην Python 2 μπορείτε να το προσθέσετε στην κορυφή του αρχείου πηγής:

from __future__ import print_function

Στη συνέχεια, κάνετε

print("hi there", file=f)
Σχόλια (0)