0

我正在学习 Python,但遇到了一些问题。

我收到此错误消息:

Traceback (most recent call last):
  File "main_console.py", line 8, in <module>
    from util import Util
  File "../utils/util.py", line 13, in <module>
    class Util:
  File "../utils/util.py", line 73, in Util
    config.write(configfile)
NameError: name 'config' is not defined

以下是我的代码(这是在函数内部):

    config = ConfigParser.ConfigParser()

    for index, list in enumerate(my_list):
        config.add_section(str(index))
        config.set(str(index), 'id', list.name)
        config.set(str(index), 'host', list.host)

    # Creating the folder
    myFolder = "/etc/element/"
    if not os.path.exists(myFolder):
        os.makedirs(myFolder)

    # Creating the file
    filePath = "/etc/element/settings.cfg"
    with open(filePath, 'wb') as configfile:
        config.write(configfile)

注意:我使用 Sublime Text 3 作为 IDE。“myFolder”不久前也有同样的问题——如果我输入filePath = myFolder + '/settings.cfg',我会得到同样的“未定义”错误。最后,我将 ConfigParser 导入如下import ConfigParser

Python是忘记了我的变量名还是我做错了什么?

4

3 回答 3

1

可能 ConfigParser 或其他一些导入也定义了 config.write() 正在使用的配置变量。

有时只导入您需要的函数会更安全,这样您就可以准确地知道文件中定义的内容。这意味着您必须显式导入您在其他文件中使用的所有内容,但它可以防止您的命名空间中出现任何未知的重复。

你会这样做:

from ConfigParser import ConfigParser  # instead of import ConfigParser

# Then
config = ConfigParser()

其次,config 是一个通用变量——尝试将其重命名为 myConfig 之类的名称,看看它是否仍然存在。

于 2013-10-14T01:08:29.760 回答
1

configfile 是您要用于 write() 的对象。您正在使用解析器进行编写。

于 2013-10-14T01:17:55.640 回答
1

感谢您的回复,但我找到了解决方案。

我去 Nano 并用这个错误编辑文件,所以我看到缩进是绝对错误的。这只是一个 Sublime text 3 问题,现在已经解决了。

于 2013-10-14T02:39:16.823 回答