Python遗忘变量名称?

时间:2013-10-14 01:01:16

标签: python configuration

我正在学习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是否忘记了我的变量名称,或者我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

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

你会这样做:

from ConfigParser import ConfigParser  # instead of import ConfigParser

# Then
config = ConfigParser()

其次,config是一个常见变量 - 尝试将其重命名为myConfig,并查看它是否仍然存在。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

我转到Nano并使用此错误编辑文件,因此我看到缩进是绝对错误的。 这只是Sublime第3期的问题,现在已经解决了。