2016-05-13 2 views
2

テキストブックの例をいくつか紹介します。私は期待どおりに動作するPythonの2.7の下でこのコードを実行するとリダイレクタによる印刷操作のPython 3.4サポート>>

Traceback (most recent call last): 
    File "make_db_file.py", line 39, in <module> 
    storeDbase(db) 
    File "make_db_file.py", line 12, in storeDbase 
    print >> dbfile, key 
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper' 
def storeDbase(db, dbfilename=dbfilename): 
    "formatted dump of database to flat file" 
    import sys 
    dbfile = open(dbfilename, 'w') 
    for key in db: 
     print >> dbfile, key 
     for (name, value) in db[key].items(): 
      print >> dbfile, name + RECSEP + repr(value) 
    print >> dbfile, ENDDB 
    dbfile.close() 

:以下のソースコードは、次のトレースバックで失敗します。誰かが私を正しい方向に向けることができますか? print関数で何が変わって、これがPython 3.4で動作しないのですか?

答えて

4

Python 3では、print()は機能であり、キーワードではありません。あなたは出力をリダイレクトしたいのであれば、あなたはこのように、オプションのパラメータfile(デフォルト値はsys.stdoutである)を設定する必要があります。

print(key, file=dbfile) 

は、変更に関する公式ドキュメントから、Print is a function段落を見てみましょうPython 3で。

+0

非常に助けてくれました。これはドキュメンテーションにありますか? – dcrearer

+0

@d_blkはい、私は、Python 2から3への 'print()'の変更を関連付けるドキュメンテーションへのリンクを追加しました: – Delgan

+0

@dcrearer:この回答を受け入れ可能とマークすることができます。 –

関連する問題