Python: друк файлу в stdout


89

Я шукав і можу знайти лише питання про навпаки: запис stdin у файл :)

Чи є швидкий і простий спосіб скинути вміст файлу в stdout?

Відповіді:


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 у будь-якому випадку завжди повинні використовувати функцію Python 3 print()- так що це не є великим тягарем.
Сесіл Каррі

42

Якщо це великий файл, і ви не хочете споживати тонну пам'яті, як це може статися з рішенням Бена, зайвий код в

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

також працює.


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

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

Щоб прочитати вміст файлу, зателефонуйте f.read (size), який зчитує деяку кількість даних і повертає їх у вигляді рядка. size - необов’язковий числовий аргумент. Якщо розмір опущений або від’ємний, весь вміст файлу буде прочитано та повернуто; це ваша проблема, якщо файл удвічі перевищує пам’ять вашої машини. В іншому випадку читається і повертається максимум байтів розміру. Якщо досягнуто кінця файлу, f.read () поверне порожній рядок ("").




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())

0

Щоб покращити відповідь @ bgporter, за допомогою Python-3 ви, мабуть, захочете оперувати байтами, а не зайвим чином перетворювати речі на utf-8:

>>> import shutil
>>> import sys
>>> with open("test.txt", "rb") as f:
...    shutil.copyfileobj(f, sys.stdout.buffer)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.