1. ホーム
  2. python

[解決済み] Python 2.7: ファイルに印刷する

2023-01-10 09:01:28

質問

ファイルに直接印刷しようとすると、なぜ sys.stdout の代わりにファイルに直接印刷しようとすると、次のような構文エラーが発生します。

Python 2.7.2+ (default, Oct  4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f1=open('./testfile', 'w+')
>>> print('This is a test', file=f1)
  File "<stdin>", line 1
    print('This is a test', file=f1)
                            ^
SyntaxError: invalid syntax

help(__builtins__)からは、以下の情報があります。

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file: a file-like object (stream); defaults to the current sys.stdout.
    sep:  string inserted between values, default a space.
    end:  string appended after the last value, default a newline.

では、printが書き込む標準的なストリームを変更するには、どのような構文が正しいのでしょうか?

私は、ファイルに書き込むための異なる多分より良い方法があることを知っていますが、なぜこれが構文エラーでなければならないのか本当にわかりません...。

素敵な説明は感謝されます!

どのように解決するのですか?

もし、あなたが print 関数を使いたい場合、Python 2で __future__ :

from __future__ import print_function

しかし、関数を使わなくても、同じ効果を得ることができます。

print >>f1, 'This is a test'