当我运行python代码时,它会显示“<<在这个时候是出乎意料的"

时间:2016-01-15 02:38:06

标签: python linux sed

基本上,它是我们的协作者用来生成网格的python代码,它是在Linux环境下开发的。我使用Cygwin在Windows上运行此代码。故障部分如下。 BiV_temp.geo也是一个python脚本。所以命令是替换字符串<>在BiV_temp.geo脚本中,带有预定义的数字和文件名。

os.system('cp BiV_fiber.geo BiV_temp.geo')
cmd = "sed -i 's/<<Meshsize>>/"+"%5.2f"%(meshsize)+"/g' BiV_temp.geo"
os.system(cmd)
cmd = "sed -i 's/<<LVfilename>>/"+"\"%s\""%(LVendocutfilename)+"/g' BiV_temp.geo"
os.system(cmd)
cmd = "sed -i 's/<<RVfilename>>/"+"\"%s\""%(RVendocutfilename)+"/g' BiV_temp.geo"
os.system(cmd)
cmd = "sed -i 's/<<Epifilename>>/"+"\"%s\""%(epicutfilename)+"/g' BiV_temp.geo"
os.system(cmd)
cmd = "gmsh -3 BiV_temp.geo -o %s"%(mshfilename)
os.system(cmd)
cmd = "rm BiV_temp.geo"
os.system(cmd)

2 个答案:

答案 0 :(得分:0)

理智的解决方案是让您的“协作者”编写Python代码,允许您将这些内容作为参数传递给函数调用。

答案 1 :(得分:-1)

你试图在python中执行命令代码吗? 我在"%5.2f"%(meshsize)中注意到你写了%5,为了添加文字你应该添加%s并且还要避免加号,它会让它变得非常难以阅读和混乱,我会写下所有的像这样的一行:

meshsize = 100
cmd = "sed -i 's/<<Meshsize>>/%s5.2f/g' BiV_temp.geo" %meshsize
print cmd

如果你的meshsize是x,y,z的列表,那么就这样写:

meshsize = (100,50,20)
cmd = "sed -i 's/<<Meshsize>>/%s,%s,%s5.2f/g' BiV_temp.geo" %meshsize
print cmd

希望有所帮助。