Python: imprimir un archivo en stdout

89

He buscado y solo puedo encontrar preguntas al revés: escribir stdin en un archivo :)

¿Existe una forma rápida y sencilla de volcar el contenido de un archivo a la salida estándar?

meteorito panama
fuente

Respuestas:

122

Por supuesto. Suponiendo que tiene una cadena con el nombre del archivo llamado fname, lo siguiente es suficiente.

with open(fname, 'r') as fin:
    print(fin.read())
David Alber
fuente
8
Tenga en cuenta que esto agregará una nueva línea adicional al final de la salida.
DA
13
Por tanto Python 3 compatibilidad y evitar el salto de línea final, la última línea debe probablemente lea: print(fin.read(), end=""). Para aprovechar esa solución en Python 2, from __future__ import print_functionse necesitará un prefijo . Por supuesto, las aplicaciones de Python 2 siempre deben usar la print()función de Python 3 de todos modos, por lo que no es una gran carga.
Cecil Curry
42

Si es un archivo grande y no desea consumir una tonelada de memoria como podría suceder con la solución de Ben, el código adicional en

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

también funciona.

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

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

Para leer el contenido de un archivo, llame a f.read (tamaño), que lee cierta cantidad de datos y los devuelve como una cadena. size es un argumento numérico opcional. Cuando el tamaño se omite o es negativo, se leerá y devolverá todo el contenido del archivo; es su problema si el archivo es dos veces más grande que la memoria de su máquina. De lo contrario, se leen y devuelven bytes como máximo. Si se ha llegado al final del archivo, f.read () devolverá una cadena vacía ("").

Ben
fuente
7

Mi versión abreviada en Python3

print(open('file.txt').read())
mlanzero
fuente
2
Nota: esto no cierra el archivo.
Ben Caine
3

también puedes probar esto

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

Ninja420
fuente
0

Puedes probar esto.

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

Esto le dará la salida del archivo.

Shoaib
fuente
0

Si necesita hacer esto con el pathlibmódulo, puede usar pathlib.Path.open()para abrir el archivo e imprimir el texto desde read():

from pathlib import Path

fpath = Path("somefile.txt")

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

O simplemente llame pathlib.Path.read_text():

from pathlib import Path

fpath = Path("somefile.txt")

print(fpath.read_text())
RoadRunner
fuente
0

Para mejorar la respuesta de @ bgporter, con Python-3 probablemente querrá operar en bytes en lugar de convertir cosas innecesariamente a utf-8:

>>> import shutil
>>> import sys
>>> with open("test.txt", "rb") as f:
...    shutil.copyfileobj(f, sys.stdout.buffer)
mricon
fuente