Python如何从已导入的外部py文件中调用指定命名的文本变量
问题根因
你代码的核心逻辑错误是:
- 生成的
doc_labels列表存储的是"doc_1"、"doc_2"这类字符串形式的变量名,不是train模块的实际属性引用 - 直接写
train.doc_labels[i]时,Python会尝试查找train模块下名为doc_labels的属性,而不是把doc_labels[i]的字符串值作为属性名去获取对应内容,自然会报属性不存在的错误。
正确实现方案
方案1:用getattr()动态获取模块属性(推荐)
getattr()是Python内置函数,不需要额外导入依赖,可以传入字符串形式的属性名,直接从对象/模块中取出对应属性值,修改后的代码如下:
from documents import training as train # 导入目标文件 train_docs = [] # 可以同步生成变量名列表 doc_labels = [] for i in range(1, 14): attr_name = f'doc_{i}' doc_labels.append(attr_name) # 动态获取对应文本内容 doc_content = getattr(train, attr_name) train_docs.append(doc_content)
方案2:一行式列表推导式简化写法
如果只需要收集所有文本内容,不需要单独存储变量名列表,可以直接简化为一行代码:
from documents import training as train train_docs = [getattr(train, f'doc_{i}') for i in range(1,14)]
内容的提问来源于stack exchange,提问作者Aidan Payne
相关产品推荐
相关产品推荐

