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が必要になります。もちろん、Python2アプリケーションは常にPython3print()関数を使用する必要があります。そのため、それほど大きな負担にはなりません。
セシルカレー

42

それが大きなファイルであり、Benのソリューションで発生する可能性があるように大量のメモリを消費したくない場合は、

>>> 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はオプションの数値引数です。サイズが省略されているか負の場合、ファイルの内容全体が読み取られて返されます。ファイルがマシンのメモリの2倍の大きさである場合、それはあなたの問題です。それ以外の場合は、最大サイズのバイトが読み取られて返されます。ファイルの終わりに達した場合、f.read()は空の文字列( "")を返します。



3

これを試すこともできます

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


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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.