值错误:运行python脚本时占位符无效

2024-10-03 09:10:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它可以更改批处理脚本中的环境变量并编写新的批处理文件。批处理文件依次更改另一个文件中的环境变量并写入新文件。 在python脚本中,我有以下代码:

TEMPLATE_PATH = "/home/eric2207/test/data_template.cmd"

    def specialise_cmd(template, things_to_replace, outfile):
            with open(TEMPLATE_PATH, "r") as f:
                    template = string.Template(f.read())
                    cmd = template.substitute(things_to_replace)

            with open(outfile, "w") as f:
                    f.write(cmd)

    for k in range (0, len(atomic_mass)):

            replace_dict = {"i" : atomic_mass[k]}

            cmd_name = "/home/eric2207/data/Z=66/data_{0}.cmd".format(atomic_mass[k])
            specialise_cmd(TEMPLATE_PATH, replace_dict, cmd_name)

在数据中_模板.cmd,代码为:

^{pr2}$

在目录dat文件中,我有环境变量${A}和${beta}。 在运行python脚本时,我收到了一个错误:数据中所有变量的占位符无效_命令行模板除了我

    Traceback (most recent call last):
      File "multiple.py", line 43, in <module>
        specialise_cmd(TEMPLATE_PATH, replace_dict, cmd_name)
      File "multiple.py", line 13, in specialise_cmd
        cmd = template.substitute(things_to_replace)
      File "/usr/lib64/python2.6/string.py", line 172, in substitute
        return self.pattern.sub(convert, self.template)
      File "/usr/lib64/python2.6/string.py", line 169, in convert
        self._invalid(mo)
      File "/usr/lib64/python2.6/string.py", line 146, in _invalid
        (lineno, colno))
ValueError: Invalid placeholder in string: line 15, col 11

但是,我需要数据中的占位符_模板.cmd在中更改环境变量目录dat. 我想知道这里出了什么问题。任何帮助将不胜感激!在


Tags: 文件pathinpy脚本cmddatastring
1条回答
网友
1楼 · 发布于 2024-10-03 09:10:58

作为Python 2.6 Docs状态

Any other appearance of $ in the string will result in a ValueError being raised.

$出现在第15行第11列(如您的错误中指定的那样) 这是for j in "${deformation[@]}"。您的脚本不能包含此内容。在

我建议将脚本移植到python,因为您已经在使用它了。请看一下os.mkdir()os.system()函数以开始。在

相关问题 更多 >