重新创建Python调用



是否可以从调用程序本身中为Python程序进行修补复制和完整的调用?它不一定是完全相同的调用字符串,但是参数应分析为同一件事。

不幸的是,' '.join(sys.argv)不会切割它。我在这种方法中遇到的主要问题是它无法正确引用论点。考虑使用dummy.py

考虑CC_2

运行python dummy.py "1 2"打印:

['dummy.py', '1 2']
dummy.py 1 2

当然,如果我们复制后者,我们会得到不同的调用。用引号包裹每个参数也无法正常工作。考虑dummy2.py

import sys
print(sys.argv)
print(' '.join('"{}"'.format(s) for s in sys.argv))

这将突破:

python dummy2.py ' " breaking " '

使用 shlex.quote

import sys
from shlex import quote
print(' '.join(quote(s) for s in sys.argv))

在外壳中:

python space_in_argv.py "aa bb" ' " breaking " '

屈服:

space_in_argv.py 'aa bb' ' " breaking " '

您可能还需要包括sys.executable,请参阅文档中的更多详细信息。

相关内容

  • 没有找到相关文章

最新更新