我正在学习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
。
答案 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期的问题,现在已经解决了。