os.system 里面的双引号 echo

Double quotes inside os.system echo

这是我的代码:

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。

在 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))

会给你同样的结果。