我正在阅读教科书中的一些例子。下面的源代码失败,带有以下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中工作?
答案 0 :(得分:4)
在Python 3中,print()
是一个函数而不是关键字。因此,如果要重定向输出,则必须设置可选参数file
(默认值为sys.stdout
),如下所示:
print(key, file=dbfile)
请查看有关Python 3中更改内容的官方文档中的Print is a function段落。