Python 3.4支持使用重定向器的打印操作>>

时间:2016-05-13 23:03:40

标签: python python-3.x

我正在阅读教科书中的一些例子。下面的源代码失败,带有以下Traceback:

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()

当我在Python 2.7下运行此代码时,它按预期工作。有人可以指出我正确的方向。 print函数中有什么变化阻止它在Python 3.4中工作?

1 个答案:

答案 0 :(得分:4)

在Python 3中,print()是一个函数而不是关键字。因此,如果要重定向输出,则必须设置可选参数file(默认值为sys.stdout),如下所示:

print(key, file=dbfile)

请查看有关Python 3中更改内容的官方文档中的Print is a function段落。