Python: Drucken einer Datei auf stdout


88

Ich habe gesucht und kann nur umgekehrt Fragen finden: Schreiben von stdin in eine Datei :)

Gibt es eine schnelle und einfache Möglichkeit, den Inhalt einer Datei in stdout zu speichern?

Antworten:


121

Sicher. Angenommen, Sie haben eine Zeichenfolge mit dem Namen der Datei fname, führt der folgende Trick aus.

with open(fname, 'r') as fin:
    print(fin.read())

8
Beachten Sie, dass dadurch am Ende der Ausgabe eine zusätzliche neue Zeile hinzugefügt wird.
DA

13
Aus Gründen der Python 3-Kompatibilität und zur Vermeidung der nachfolgenden Zeilenumbruch sollte die letzte Zeile wahrscheinlich lauten : print(fin.read(), end=""). Um diese Lösung unter Python 2 nutzen zu können, ist ein Präfix from __future__ import print_functionerforderlich. Natürlich sollten Python 2-Anwendungen ohnehin immer die Python 3- print()Funktion verwenden - das ist also keine große Belastung.
Cecil Curry

42

Wenn es sich um eine große Datei handelt und Sie nicht viel Speicherplatz verbrauchen möchten, wie dies bei Bens Lösung der Fall sein könnte, wird der zusätzliche Code hinzugefügt

>>> import shutil
>>> import sys
>>> with open("test.txt", "r") as f:
...    shutil.copyfileobj(f, sys.stdout)

funktioniert auch.


18
f = open('file.txt', 'r')
print f.read()
f.close()

Von http://docs.python.org/tutorial/inputoutput.html

Um den Inhalt einer Datei zu lesen, rufen Sie f.read (Größe) auf, das eine bestimmte Datenmenge liest und als Zeichenfolge zurückgibt. Größe ist ein optionales numerisches Argument. Wenn die Größe weggelassen oder negativ ist, wird der gesamte Inhalt der Datei gelesen und zurückgegeben. Es ist Ihr Problem, wenn die Datei doppelt so groß ist wie der Speicher Ihres Computers. Andernfalls werden höchstens Bytes gelesen und zurückgegeben. Wenn das Ende der Datei erreicht wurde, gibt f.read () eine leere Zeichenfolge ("") zurück.


7

Meine verkürzte Version in Python3

print(open('file.txt').read())

1
Hinweis: Dadurch wird die Datei nicht geschlossen.
Ben Caine

3

Sie können dies auch versuchen

print ''.join(file('example.txt'))


0

Sie können dies versuchen.

txt = <file_path>
txt_opn = open(txt)
print txt_opn.read()

Dadurch erhalten Sie eine Dateiausgabe.


0

Wenn Sie dies mit dem pathlibModul tun müssen , können Sie pathlib.Path.open()die Datei öffnen und den Text drucken von read():

from pathlib import Path

fpath = Path("somefile.txt")

with fpath.open() as f:
    print(f.read())

Oder rufen Sie einfach an pathlib.Path.read_text():

from pathlib import Path

fpath = Path("somefile.txt")

print(fpath.read_text())
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.