Skip to main content
 首页 » 编程设计

python之Mark Lutz 编写的 Python 编程第 1 章错误

2025年05月04日12sxdcgaq8080

我正在阅读 Mark Lutz 的 Python 编程书,在第一章中,当我尝试运行脚本时,我总是遇到错误。这是他在书中的代码:

    dbfilename = 'people-file' 
    ENDDB = 'enddb.' 
    ENDREC = 'endrec.' 
    RECSEP = '=>' 
 
    def storeDbase(db, dbfilename=dbfilename): 
        "formatted dump of databse to flat file" 
        dbfile = open(dbfilename, 'w') 
        for key in db: 
            print(key, file=dbfile) 
            for (name, value) in db[key].items(): 
                print(name + RECSEP + repr(value), file=dbfile) 
            print(ENDREC, file=dbfile) 
        print(ENDDB, file=dbfile) 
        dbfile.close() 
 
    def loadDbase(dbfilename=dbfileame): 
        "parse data to reconstruct database" 
        dbfile = open(dbfilename) 
        import sys 
        sys.stdin = dbfile 
        db = {} 
        key = input() 
        while key != ENDDB: 
            rec = {} 
            field = input() 
            while field != ENDREC: 
                name, value = field.split(RECSEP) 
                rec[name] = eval(value) 
                field = input() 
            db[key] = rec 
            key = input() 
        return db 
 
    if __name__== '__main__': 
        for initdata import db 
        storeDbase(db) 

当我运行脚本时,这是我不断收到的错误:

-> Programming_Python  python make_db_file.py 
   Welcome to Python! Lets do something cool 
  File "make_db_file.py", line 17 
    print(key, file=dbfile) 
               ^ 
SyntaxError: invalid syntax 

任何人都可以帮我理解代码有什么问题吗?

谢谢。

请您参考如下方法:

我猜您正在使用两个不同版本的 python。尝试升级到 python 3,看看是否有帮助:

python 2:

>>> import sys 
>>> sys.version 
'2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]' 
>>> print('hi', file=open('file.txt', 'w')) 
  File "<stdin>", line 1 
    print('hi', file=open('file.txt', 'w')) 
                    ^ 
SyntaxError: invalid syntax 
>>> 

python 3:

>>> import sys 
>>> sys.version 
'3.4.0b2 (v3.4.0b2:ba32913eb13e, Jan  5 2014, 11:02:52) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]' 
>>> print('hi', file=open('file.txt', 'w')) 
>>>  

在python3中,print是一个函数,意思是可以传入参数。但是在python2中,它是一个语句,也就是说不能传入参数。