425 Stimmen

Zeichenkette jedes Mal in einer neuen Zeile in eine Datei schreiben

Ich möchte jedes Mal einen Zeilenumbruch an meinen String anhängen, wenn ich file.write() . Wie lässt sich dies in Python am einfachsten bewerkstelligen?

0voto

vey Punkte 58

Normalerweise würden Sie verwenden \n aber aus irgendeinem Grund in Visual Studio Code 2019 Individual wird es nicht funktionieren. Aber Sie können dies verwenden:

# Workaround to \n not working
print("lorem ipsum", file=f) **Python 3.0 onwards only!**
print >>f, "Text" **Python 2.0 and under**

-1voto

mckenzm Punkte 1138

Wenn write ein Callback ist, benötigen Sie möglicherweise ein eigenes writeln.

  def writeln(self, string):
        self.f.write(string + '\n')

Es befindet sich im Inneren eines speziellen Öffners. Siehe Antworten und Feedback für diese Frage: Unterklassifizierung von Dateiobjekten (zur Erweiterung von Öffnungs- und Schließvorgängen) in Python 3

(Kontext-Manager)

Ich bin auf dieses Problem gestoßen, als ich ftplib zum "Abrufen von Zeilen" aus einer Datei verwendet habe, die auf Datensätzen basiert (FB80):

with open('somefile.rpt', 'w') as fp:
     ftp.retrlines('RETR USER.REPORT', fp.write)

und endete mit einem langen Datensatz ohne Zeilenumbrüche, dies ist wahrscheinlich ein Problem mit ftplib, aber obskur.

So wurde dies:

with OpenX('somefile.rpt') as fp:
     ftp.retrlines('RETR USER.REPORT', fp.writeln) 

Es erfüllt seinen Zweck. Dies ist ein Anwendungsfall, nach dem einige Leute suchen werden.

Vollständige Erklärung (nur die letzten beiden Zeilen sind von mir):

class OpenX:
    def __init__(self, filename):
        self.f = open(filename, 'w')

    def __enter__(self):
        return self.f

    def __exit__(self, exc_type, exc_value, traceback):
        self.f.close()

    def writeln(self, string):
        self.f.write(string + '\n')

-1voto

Assaf-ge Punkte 396

Um die Verwendung mehrerer Betriebssysteme zu unterstützen: file.write(f'some strings and/or {variable}. {os.linesep}')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X