【问题标题】:When I run a python code, it says “<< was unexpected at this time"当我运行python代码时,它说“<<此时是意外的”
【发布时间】:2016-01-15 02:38:05
【问题描述】:

基本上,它是来自我们合作者的用于生成网格的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)

【问题讨论】:

  • 您确定这是 Python 回溯,而不是 sed 错误吗?我从未见过这样的错误消息。
  • 可能。由于我是 python 和 unix 的新手,所以可能是 sed 错误...
  • @H.Zou 请将您在运行脚本的尝试和随后出现的错误粘贴到您的问题中,以便我们确定。
  • 您不知道是哪一行导致了错误(&lt;&lt; 有多行)。您也不提供输入文件供其他人尝试,或者(最好)提供仍然导致您的错误的小输入文件。这使得帮助您变得更加困难。
  • 这太疯狂了。如果您的整个程序由 shell 脚本组成,请编写一个 shell 脚本,而不是 Python 包装器,以便为每个 shell 脚本启动一个新的 shell。还要注意sed是一种脚本语言,所以你可以combine all of these sed snippets into one;然后将源文件复制到临时文件并进行内联替换 -i 不再有意义(如果曾经这样做的话)。

标签: python linux sed


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您正在尝试在 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
    

    希望有所帮助。

    【讨论】:

    • 这只是一个关于风格的评论,它不能解决问题。
    • 你指的是哪个“你”?他正在尝试使用sed 将“>”替换为浮点数。他不需要你在第二个错误示例中所做的%s 东西。
    • @tdelaney:它使它可读,这是问题之一,所以人们不会跳过阅读它,你在记事本中输入你的代码不是吗? :D
    • @tdelaney 当我读到这个问题时,它只有 2 行代码,没有别的,所以我只是建议这样写。你怎么了?
    • 大家好,别生气。所有的建议都表示赞赏。 @BernardRouhi
    猜你喜欢
    • 1970-01-01
    • 2018-12-09
    • 2022-12-24
    • 2020-11-27
    • 2019-07-04
    • 2020-04-18
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多