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()

第 2 に、config は一般的な変数です。名前を myConfig のような名前に変更してみて、引き続き発生するかどうかを確認してください。

于 2013-10-14T01:08:29.760 に答える