Skip to main content
 首页 » 编程设计

python之使用文本文件接收 Python 中变量的字符串,而不定义它

2025年05月04日20lyhabc

我有一个文本文件,其中有几个变量。其中大部分用于我的 Bash 脚本,但我想为我的 Python 脚本使用相同的文本文件。对于 Python 格式不正确的行,我希望我的脚本忽略。对于格式正确的那些,我希望脚本检查它是否是我正在寻找的变量 - 使用它。

导入系统 导入重新

for ln in open("thefile.txt"): 
        m = re.match(r"(?P<varname>[^=]*)\s*=\s*(?P<value>.+)", ln) 
        if m: 
                varname = m.group("varname") 
                value_string = m.group("value") 
                value = eval(value_string) 
                print value 
                # so if the variables name is THISVARIABLE, get that value: 
                if varname == "THISVARIABLE": 
                        mypythonvariable == value 

我收到以下错误:

NameError: 名称 'Somevariableinmytextfile' 未定义

Somevariableinmytextfile 是该文件中的第一个变量。

我的问题:

是否必须在 txt 文件中定义每个变量才能消除此错误?如果没有,我该怎么办?我是 Python 的新手。这是我的第一个程序。

请您参考如下方法:

错误是 eval 提示 value_string 的内容没有任何意义。

真正的 错误完全是使用eval。 (可以找到关于陷阱的好帖子 here。)您甚至不需要在此处eval - 将 value_string 保留为正则表达式给你的字符串就好了。

当前方法的问题

示例 thefile.txt:

foo=bar 
baz=42 
quux=import os; os.shutdown() 
  • 当解析 foo 时,Python 提示 bar 没有定义。 (简单。)
  • 当解析 bar 时,Python 给你一个 int 而不是 str。 (没有真正的问题...)
  • 当解析 quux 时,Python 会关闭您的计算机。 (呃哦!)

为什么不需要eval

你想要一个字符串值,对吗?正则表达式已经为您提供了一个字符串!

varname = m.group("varname") 
value = m.group("value") 
print value 
if varname == "THISVARIABLE": 
    mypythonvariable = value # You meant = instead of ==?