在python中找不到var

时间:2016-05-31 12:42:34

标签: python loops python-3.x scope pycharm

在我的程序开始时,我正在定义一个简单的对象,它设置我将如何调用服务的配置。像这样:

document_conversion = DocumentConversionV1(
    username='xxx',
    password='xxx',
    version='2016-05-31')

然后,我想在目录中的所有文件上调用服务。我尝试这样做,但我相信配置对象无法找到 - 它似乎超出范围,我得到这个错误:

NameError: name 'config' is not defined

这是我在创建对象后直接拥有的内容:

yourpath = 'C:\\Users\\Desktop\\working_folder\\'

for root, dirs, files in os.walk(yourpath, topdown=False):
    for name in files:
        print(os.path.join(root, name))
        config['conversion_target'] = DocumentConversionV1.ANSWER_UNITS
        with open(join(dirname(__file__), os.path.join(root, name)), 'r') as document:
         print(json.dumps(document_conversion.convert_document(document=document, config=config), indent=2))

我已经尝试在for子句中的for循环中定义配置对象,但它似乎仍然不起作用。奇怪的是,如果我从上面删除for循环,它似乎确实有效(如果在一个文件而不是文件夹上运行)。

任何想法可能会出现问题吗?

由于

2 个答案:

答案 0 :(得分:1)

如果config词典只应包含'conversion_target'键,则可以替换该行

config['conversion_target'] = DocumentConversionV1.ANSWER_UNITS

config = {'conversion_target': DocumentConversionV1.ANSWER_UNITS}

答案 1 :(得分:0)

问题在于,为了使用以下行为数组赋值:

config['conversion_target'] = DocumentConversionV1.ANSWER_UNITS

字典'配置'应该已经初始化了。如果要同时初始化和确定值,可以使用。

config = {'conversion_target': DocumentConversionV1.ANSWER_UNITS}

当删除循环时,奇怪的部分就是这个。你确定它进入了内循环吗?