Python: stampa di un file su stdout


89

Ho cercato e posso trovare solo domande sull'altro modo: scrivere stdin su un file :)

C'è un modo semplice e veloce per scaricare il contenuto di un file su stdout?

Risposte:


122

Sicuro. Supponendo che tu abbia una stringa con il nome del file chiamato fname, quanto segue fa il trucco.

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

8
Nota che questo aggiungerà una nuova riga in più alla fine dell'output.
DA

13
Sia per Python 3 compatibilità e di evitare il fine riga, l'ultima riga dovrebbe probabilmente letto: print(fin.read(), end=""). Per sfruttare quella soluzione in Python 2, from __future__ import print_functionsarà necessario un prefisso . Ovviamente, le applicazioni Python 2 dovrebbero sempre utilizzare la print()funzione Python 3 comunque, quindi non è un grosso peso.
Cecil Curry

42

Se si tratta di un file di grandi dimensioni e non si desidera consumare una tonnellata di memoria come potrebbe accadere con la soluzione di Ben, il codice aggiuntivo in

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

funziona anche.


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

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

Per leggere il contenuto di un file, chiama f.read (size), che legge una certa quantità di dati e li restituisce come una stringa. size è un argomento numerico opzionale. Quando la dimensione è omessa o negativa, l'intero contenuto del file verrà letto e restituito; è un tuo problema se il file è due volte più grande della memoria della tua macchina. In caso contrario, vengono letti e restituiti al massimo i byte di dimensione. Se è stata raggiunta la fine del file, f.read () restituirà una stringa vuota ("").


7

La mia versione abbreviata in Python3

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

2
Nota: questo non chiude il file.
Ben Caine

3

puoi provare anche questo

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


0

Puoi provare questo.

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

Questo ti darà l'output del file.


0

Se è necessario farlo con il pathlibmodulo, è possibile utilizzare pathlib.Path.open()per aprire il file e stampare il testo da read():

from pathlib import Path

fpath = Path("somefile.txt")

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

O semplicemente chiama pathlib.Path.read_text():

from pathlib import Path

fpath = Path("somefile.txt")

print(fpath.read_text())

0

Per migliorare la risposta di @ bgporter, con Python-3 probabilmente vorrai operare sui byte invece di convertire inutilmente le cose in utf-8:

>>> import shutil
>>> import sys
>>> with open("test.txt", "rb") as f:
...    shutil.copyfileobj(f, sys.stdout.buffer)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.