非常奇怪的Python NameError

1 投票
1 回答
4016 浏览
提问于 2025-04-17 06:44

我正在写一个Python程序,用来把一些数据保存到文件里,但它没有正常工作。

path="C:/foo/bar"
def newData():
    import pickle
    data = [
        ["foo"],
        ["bar"],
        ["baz"]
    ]
    file = None
    i = 0

    while file==None:
        if not exists(path + str(i)+".data"):
            file = open(path + str(i)+".data", "w+")
        else:
            i+=1
    pickle.dump(data, file)
    close(file)
    return path + str(i)+".data"

我遇到了一个名字错误,提示“全局名称close未定义”:

  File "C:/foo/bar/baz.py", line 26, in newData
    close(file)
NameError: global name 'close' is not defined

如果我把包含close的那一行注释掉,我就会看到:

  File "C:/foo/bar/baz.py", line 26, in newData
    #close(file)
NameError: global name 'close' is not defined

我的代码错了吗(是的)?错在哪里呢?

1 个回答

5

你在编辑文件,但你的网页服务器还是在运行旧的代码。错误信息显示了源文件的行数,但这并不意味着它正在运行那一行。你提到的错误信息中显示了一行注释作为问题,这就很明显了。

正如@JBernardo所说,你需要把“close(file)”改成“file.close()”,然后你还需要强制让你的网页服务器重新加载代码。

撰写回答