Python: mencetak file ke stdout

89

Saya telah mencari dan saya hanya dapat menemukan pertanyaan tentang sebaliknya: menulis stdin ke file :)

Apakah ada cara cepat dan mudah untuk membuang konten file ke stdout?

meteoritepanama
sumber

Jawaban:

122

Tentu. Dengan asumsi Anda memiliki string dengan nama file yang dipanggil fname, trik berikut melakukan triknya.

with open(fname, 'r') as fin:
    print(fin.read())
David Alber
sumber
8
Perhatikan bahwa ini akan menambahkan baris baru ekstra di akhir keluaran.
DA
13
Untuk kedua Python 3 kompatibilitas dan menghindari baris tertinggal, baris terakhir mungkin harus membaca: print(fin.read(), end=""). Untuk memanfaatkan solusi itu di bawah Python 2, prefiks from __future__ import print_functionakan dibutuhkan. Tentu saja, aplikasi Python 2 harus selalu menggunakan fungsi Python 3 print()- jadi itu tidak terlalu membebani.
Cecil Curry
42

Jika itu adalah file besar dan Anda tidak ingin menghabiskan banyak memori seperti yang mungkin terjadi dengan solusi Ben, kode tambahan di

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

juga bekerja.

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

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

Untuk membaca konten file, panggil f.read (size), yang membaca sejumlah data dan mengembalikannya sebagai string. size adalah argumen numerik opsional. Jika ukuran dihilangkan atau negatif, seluruh konten file akan dibaca dan dikembalikan; itu masalah Anda jika file tersebut dua kali lebih besar dari memori mesin Anda. Jika tidak, paling banyak ukuran byte yang dibaca dan dikembalikan. Jika akhir file telah tercapai, f.read () akan mengembalikan string kosong ("").

Ben
sumber
7

Versi singkat saya dengan Python3

print(open('file.txt').read())
mlanzero.dll
sumber
2
Catatan: ini tidak menutup file.
Ben Caine
3

Anda juga bisa mencoba ini

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

Ninja420
sumber
0

Anda bisa mencobanya.

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

Ini akan memberi Anda keluaran file.

Shoaib
sumber
0

Jika Anda perlu melakukan ini dengan pathlibmodul, Anda dapat menggunakan pathlib.Path.open()untuk membuka file dan mencetak teks dari read():

from pathlib import Path

fpath = Path("somefile.txt")

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

Atau cukup hubungi pathlib.Path.read_text():

from pathlib import Path

fpath = Path("somefile.txt")

print(fpath.read_text())
RoadRunner
sumber
0

Untuk meningkatkan jawaban @ bgporter, dengan Python-3 Anda mungkin ingin beroperasi pada byte daripada mengonversi hal-hal yang tidak perlu ke utf-8:

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