gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:47 25 4
gpt4 key购买 nike

我有一个文本文件,其中有几个变量。其中大部分用于我的 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 ==?

关于python - 使用文本文件接收 Python 中变量的字符串,而不定义它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com