Python: печать файла на стандартный вывод

89

Я искал и могу найти только вопросы об обратном: запись stdin в файл :)

Есть ли быстрый и простой способ выгрузить содержимое файла на стандартный вывод?

метеоритпанама
источник

Ответы:

122

Конечно. Предполагая, что у вас есть строка с именем файла с именем fname, следующее поможет.

with open(fname, 'r') as fin:
    print(fin.read())
Дэвид Альбер
источник
8
Обратите внимание, что это добавит дополнительную новую строку в конце вывода.
DA
13
Для обоих совместимости Python 3 и избежать концевая новой строки, последняя строка , вероятно , следует прочитать: print(fin.read(), end=""). Чтобы использовать это решение в Python 2, from __future__ import print_functionпотребуется префикс . Конечно, приложения Python 2 в любом случае всегда должны использовать print()функцию Python 3, так что это не является большой проблемой.
Сесил Карри,
42

Если это большой файл, и вы не хотите использовать тонну памяти, как это может случиться с решением Бена, дополнительный код в

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

тоже работает.

bgporter
источник
18
f = open('file.txt', 'r')
print f.read()
f.close()

Из http://docs.python.org/tutorial/inputoutput.html

Чтобы прочитать содержимое файла, вызовите f.read (size), который считывает некоторое количество данных и возвращает их в виде строки. размер - необязательный числовой аргумент. Если размер опущен или отрицателен, будет прочитано и возвращено все содержимое файла; это ваша проблема, если размер файла вдвое превышает объем памяти вашей машины. В противном случае считываются и возвращаются не более байтов размера. Если достигнут конец файла, f.read () вернет пустую строку ("").

Бен
источник
7

Моя сокращенная версия на Python3

print(open('file.txt').read())
мланзеро
источник
2
Примечание: это не закрывает файл.
Бен Кейн
3

вы также можете попробовать это

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

Ниндзя420
источник
0

Вы можете попробовать это.

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

Это даст вам выходной файл.

Шоаиб
источник
0

Если вам нужно сделать это с помощью pathlibмодуля, вы можете использовать pathlib.Path.open()для открытия файла и печати текста из read():

from pathlib import Path

fpath = Path("somefile.txt")

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

Или просто позвоните pathlib.Path.read_text():

from pathlib import Path

fpath = Path("somefile.txt")

print(fpath.read_text())
RoadRunner
источник
0

Чтобы улучшить ответ @bgporter, с Python-3 вы, вероятно, захотите работать с байтами вместо ненужного преобразования вещей в utf-8:

>>> import shutil
>>> import sys
>>> with open("test.txt", "rb") as f:
...    shutil.copyfileobj(f, sys.stdout.buffer)
мрикон
источник