如何通过Python脚本读取命令行指定Python文件的变量值?
Python 3 内置方案替代 Python 2 toolbox 读取变量文件
绝对有Python 3的内置方案可以搞定这个需求,而且你提到的导入法确实是最可行的路子!下面给你两种实用的实现方式,完美适配你需要的命令行指定文件的场景:
方法一:用 importlib.util 动态导入指定文件(推荐)
这个是Python 3.4+的标准库方案,相当于把目标文件当作一个正规模块来导入,能直接通过模块属性访问变量,非常规范:
import importlib.util import argparse # 解析命令行参数(假设你用argparse处理args.file) parser = argparse.ArgumentParser() parser.add_argument('--file', required=True, help='Path to the Python file with variables') args = parser.parse_args() file_path = args.file # 对应你的路径:<home/myname/python/myfile.py> # 动态导入指定路径的文件 spec = importlib.util.spec_from_file_location("custom_vars_module", file_path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) # 现在直接通过模块属性访问变量 my_mood = module.var_one number = module.var_two decimal = module.var_three candy = module.var_four print(f"Mood: {my_mood}, Number: {number}")
方法二:用 exec() 读取变量到字典(贴近原toolbox用法)
如果你想保留和原代码几乎一致的字典取值方式,用exec()直接执行文件内容并把变量存入字典,完全契合你原来的使用习惯:
import argparse def load_vars_to_dict(file_path): var_dict = {} # 读取文件内容并执行,将变量存入字典 with open(file_path, 'r', encoding='utf-8') as f: exec(f.read(), var_dict) return var_dict # 解析命令行参数 parser = argparse.ArgumentParser() parser.add_argument('--file', required=True, help='Path to the Python file with variables') args = parser.parse_args() # 获取变量字典,和原toolbox用法一致 d = load_vars_to_dict(args.file) # 完全复用原代码的取值逻辑 my_mood = d['var_one'] number = d['var_two'] decimal = d['var_three'] candy = d['var_four']
注意事项
- 两种方法都会执行目标文件内的所有代码,请确保你读取的文件是可信的,避免安全风险。
- 如果目标文件包含除变量定义外的其他逻辑代码,也会被执行,建议保持目标文件仅包含变量定义(就像你给出的示例那样)。
内容的提问来源于stack exchange,提问作者newtopython
相关产品推荐
相关产品推荐

