当使用optparse时,我想在一个选项后得到整个字符串,但是我只得到它的一部分到第一个空格。

例如。:

python myprog.py --executable python someOtherProg.py

我在“可执行文件”中得到的只是“python”。

是否可以使用optparse解析此类行,还是必须使用argparse来解析呢?

€:我已经尝试将其包含在“s”中。但是,在进一步研究代码之后,我发现子进程调用无法处理该参数。

带有命令行的字符串被塞入列表“args”。
args = [self.getExecutable()] + self.getArgs().split()

就好像是
"[python D:\\\workspace\\\myprog\\\src\\\myprog.py]"

这使我系统找不到文件异常。当我使用
args[0]

有用。但是我松开了可执行文件的参数。

如果子流程模块首先没有获得字符串,则它会从列表中构建一条cmdline,因此,目前我无法解释这种行为。

最佳答案

您可以将它们括在引号中,以使它们与现有代码一起使用。

python myprog.py --executable "python someOtherProg.py"



我不知道是否/如何使用optparse来做到这一点,因为我还没有真正使用optparse

但是,我可以使用argparse来帮助您。这是一个简单的示例:
#!/usr/bin/python
import argparse, sys

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description = 'Demonstration of Argparse.')
    parser.add_argument('-e', '--executable', nargs = '+', help = 'List of executables')
    args = parser.parse_args(sys.argv[1:])
    print args.executable

和用法:
manoj@maruti:~$ python myprog.py --executable python someOtherProg.py
['python', 'someOtherProg.py']

我还建议从optparse切换到 argparse 。从2.7开始,Optparsedeprecated

关于python - Python optparse和参数中的空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3839791/

10-12 23:50