为什么我的python文件可以在IDLE中运行但不能在Eclipse中运行?

时间:2011-12-26 15:23:06

标签: python eclipse

我正在使用Programming Python学习Python,当我在Eclipse中运行本书中的一些示例时,会出现很多错误警告,我无法成功运行它们。但是当我在IDEL3中运行它们时,它们有效。有两个文件,一个是initdata.py,另一个是makefile.py。 这是makefile.py'代码:

dbfilename = 'people-file'
ENDDB  = 'enddb.'
ENDREC = 'endrec.'
RECSEP = '=>'

def storeDbase(db, dbfilename=dbfilename):
    "formatted dump of database 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=dbfilename):
    "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__':
    from initdata import db
    storeDbase(db)

这是initdata.py的代码:

bob = {'name':'Bob Smith','age':42,'pay':30000,'job':'dev'}
sue ={'name':'Sue Jones','age':45,'pay':40000,'job':'hdw'}
tom = {'name':'Tom','age':50,'pay':0,'job':None}
db = {}
db['bob']=bob 
db['sue']=sue 
db['tom']=tom 
if __name__=='__main__':
    for key in db:
        print(key ,'=>\n',db[key])

“来自initdata导入数据库”中始终存在错误警告,表示它是一个无法导入的导入:db。 但是当我运行这两个文件时,没有任何错误。所以,我有什么问题?我的操作系统是Ubuntu。

1 个答案:

答案 0 :(得分:0)

initdata.py中的缩进看起来不对。

db['tom']=tom 
    if __name__=='__main__':

尝试取消整个if __name__...db[key])阻止。