考虑 以下玩具 python 应用程序,它只有 argparse CLI argparse 接口。
import argparse
def main():
parser = argparse.ArgumentParser(description="Printer")
parser.add_argument("message")
args = parser.parse_args()
print(args.message)
if __name__ == "__main__":
main()
我想使用它来自另一个python脚本,
Subprocess
(因为它破坏了调用堆栈,有时会破坏 pycharm 调试器,并且通常使调试更难)。有什么办法可以做到这一点?
您可以操纵
sys.argv
列表来获得您想要的行为。
import argparse
def main():
parser = argparse.ArgumentParser(description="Printer")
parser.add_argument("message")
args = parser.parse_args()
print(args.message)
if __name__ == "__main__":
import sys
sys.argv = [sys.argv[0]] # remove original arguments except the path
sys.argv.append('hello')
main()
hello
确保将
sys.argv.copy()
保存在某个地方,以便在您的功能完成后将其重置。