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?
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:
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())
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.
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.
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 ("").
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())