gpt4 book ai didi

python - 值错误: Invalid placeholder when running python script

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:02 24 4
gpt4 key购买 nike

我有一个 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)

在data_template.cmd中,代码为:

#!/bin/sh
#PBS -q parallel
#PBS -l walltime=00:24:00
#PBS -l nodes=1:ppn=6

input="/home/eric2207/dir.dat"
output="/home/eric2207/DRHBc/dir.dat"

${i}
deformation=("-0.40" "-0.20" "0.00" "0.20" "0.40" "0.60")

cd /home/eric2207/data/Z=66
mkdir DY"${i}"

for j in "${deformation[@]}"
do
cd /home/eric2207/DRHBc
make clean
sed -e "s/\${A}/${i}/" -e "s/\${beta}/$j/" $input > $output
make
cd /home/eric2207/data/Z=66/DY"${i}"
mkdir ./"$j"
cd ./"$j"
cp /home/eric2207/DRHBc/1drhbws .
cp /home/eric2207/DRHBc/dir.dat .
cp /home/eric2207/DRHBc/paramet.for .
done

在 dir.dat 文件中,我有环境变量 ${A} 和 ${beta}。运行 python 脚本时,我收到了 data_template.cmd 中除 i 之外的所有变量无效占位符的错误。

    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

但是,我需要 data_template.cmd 中的这些占位符来更改 dir.dat 中的环境变量。我想知道这里出了什么问题。任何帮助将不胜感激!

最佳答案

作为Python 2.6 Docs状态,

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

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

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

关于python - 值错误: Invalid placeholder when running python script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185867/

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