【问题标题】:Double quotes inside os.system echo [duplicate]os.system echo中的双引号[重复]
【发布时间】:2020-12-15 14:29:47
【问题描述】:

这是我的代码:

import os
os.system("""echo pyklopp init my_model --config="'{\"model\":%s}'" --save "'test_%s/my_model.pth'" """ % ("MODEL", 0))

我的输出是:

pyklopp init my_model --config='{model:MODEL}' --save 'test_0/my_model.pth'

我想要:

pyklopp init my_model --config='{"model":MODEL}' --save 'test_0/my_model.pth'

我希望model 在双引号内,如上所示。有什么建议吗?

我在 Ubuntu 上运行。

【问题讨论】:

  • 这能回答你的问题吗? How do I used 2 quotes in os.system? PYTHON
  • 我尝试了很多东西,包括这个,当它打印双引号时,它会忽略单引号。
  • 您是否尝试过同时转义'"
  • 是的,我也试过了!
  • 这很奇怪,因为这对我有用

标签: python operating-system system python-3.8


【解决方案1】:

在 Ubuntu 上,您似乎必须双重转义 '",如下所示:

import os
os.system("""echo pyklopp init my_model --config=\\'{\\"model\\":%s}\\' --save \\'test_%s/my_model.pth\\' """ % ("MODEL", 0))

应该给你的:

pyklopp init my_model --config='{"model":MODEL}' --save 'test_0/my_model.pth'

旧答案,适用于 Windows

尝试同时转义'",并删除'{\"model\":%s}\''test_%s/my_model.pth\' 周围的双引号。

像这样:

import os
os.system("""echo pyklopp init my_model --config=\'{\"model\":%s}\' --save \'test_%s/my_model.pth\' """ % ("MODEL", 0))

这给出了:

pyklopp init my_model --config="'{"model":MODEL}'" --save "'test_0/my_model.pth'"

编辑:

你甚至不需要真正逃避任何事情。

不转义:

import os
os.system("""echo pyklopp init my_model --config='{"model":%s}' --save 'test_%s/my_model.pth' """ % ("MODEL", 0))

会给你同样的结果。

【讨论】:

  • 如果不转义,它将给出pyklopp init my_model --config={"model":MODEL} --save test_0/my_model.pth。缺少单引号!
  • 我不知道,你用的是什么 Python 版本?
  • Ubuntu 上的版本 3.8
  • 你能在 Ubuntu 上试试这个吗:os.system("""echo pyklopp init my_model --config=\\'{\\"model\\":%s}\\' --save \\'test_%s/my_model.pth\\' """ % ("MODEL", 0))?带有双重转义
  • 成功了。谢谢队友 ;) 你能用这个编辑你的答案以便我接受吗?
猜你喜欢
  • 2018-04-28
  • 2015-06-16
  • 1970-01-01
  • 2011-10-25
  • 2012-04-15
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
相关资源
最近更新 更多