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?

Meteoritenpanama
quelle

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())
David Alber
quelle
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.

bgporter
quelle
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.

Ben
quelle
7

Meine verkürzte Version in Python3

print(open('file.txt').read())
mlanzero
quelle
1
Hinweis: Dadurch wird die Datei nicht geschlossen.
Ben Caine
3

Sie können dies auch versuchen

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

Ninja420
quelle
0

Sie können dies versuchen.

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

Dadurch erhalten Sie eine Dateiausgabe.

Shoaib
quelle
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())
RoadRunner
quelle