You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:47:44