web-dev-qa-db-ja.com

Python 2.7:ファイルに出力

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.

では、標準ストリームの印刷書き込みを変更する正しい構文は何でしょうか?

私はファイルに書き込むための別のより良い方法があるかもしれないことを知っていますが、なぜこれが構文エラーである必要があるのか​​本当に分かりません...

素敵な説明をいただければ幸いです!

89
alex

Python 2でprint関数を使用する場合は、__future__からインポートする必要があります。

from __future__ import print_function

ただし、関数を使用しなくても同じ効果が得られます。

print >>f1, 'This is a test'
131
Gandaro

printは、Python 2.Xのキーワードです。以下を使用する必要があります。

f1=open('./testfile', 'w+')
f1.write('This is a test')
f1.close()
64
Simon Bergot

print(args, file=f1)は、Python 3.xの構文です。 python 2.xの場合はprint >> f1, argsを使用します。

38
citxx

コードを変更せずにprintステートメントをファイルにエクスポートできます。ターミナルウィンドウを開き、次の方法でコードを実行します。

python yourcode.py >> log.txt
13
DarkMoon

これにより、「印刷」出力がファイルにリダイレクトされます。

import sys
sys.stdout = open("file.txt", "w+")
print "this line will redirect to file.txt"
11
Daoctor

Python 3.0以降では、printfunctionで、print(...)で呼び出します。以前のバージョンでは、printstatementで、print ...で作成していました。

3.0より前のPythonでファイルに印刷するには、次のようにします。

print >> f, 'what ever %d', i

>>演算子は、ファイルfに印刷を指示します。

6
Nam Nguyen