ValueError:字符串中的占位符无效

时间:2016-06-10 16:18:42

标签: python string python-2.7 templates stringtemplate

我尝试使用python字符串模板为mutate_model.py脚本(http://salilab.org/modeller/wiki/Mutate%20model)创建自己的模板,其中我替换了这五个变量的值Model,resType,resPos,pdb,chain to replce并写一个新的文件的值,但我收到如下错误:

# only append the runtime dir on Linux
rdirs = []
ldirs = []
if sys.platform != 'darwin':
    # from http://stackoverflow.com/a/10252190/416626
    # the $ORIGIN trick is not perfect, though
    rdirs = ['$ORIGIN']
if sys.platform == 'darwin':
    ldirs = ['-Wl,-rpath,'+'@loader_path/liblonlat_bng.dylib']

extensions = Extension("convertbng.cutil",
                    sources=["convertbng/cutil" + suffix],
                    libraries=["lonlat_bng"],
                    include_dirs=['.', 'convertbng'],
                    library_dirs=['.', 'convertbng'],
                    runtime_library_dirs=rdirs,
                    extra_compile_args=["-O3"],
                    extra_link_args=ldirs
) 

提前致谢

1 个答案:

答案 0 :(得分:8)

这是错误的,因为你的字符串中有一个无效的模板标识符

env.libs.parameters.read(file='$(LIB)/par.lib')   # Notice the $(LIB)

来自文档

  

$$是一个逃脱;它被替换为单个$。

  

字符串中$的任何其他外观都会导致引发ValueError。

您需要使用

$$(LIB)

此外,您的变量大小写不匹配

mdl1.write(file=$modelname+$restyp1+$respos1+$chain+'.tmp')#change

但是你传递的是resType1resPos1。您需要传递restype1respos1