我试图从命令行(即$python parser_prog.py <pos1> <pos2> --opt1 --opt2
)将一个字符串作为输入参数传递给Python程序,并使用argparse解释这些。当然,如果包含任何元字符,这些首先由shell解释,因此需要引用它。
这似乎有效,字符串按字面顺序传递,保留\ *?!字符:
$ python parser_prog.py 'str\1*?' 'str2!'
然而,当我试图通过' - '(连字符)字符时,我似乎无法掩盖它。它被解释为无效选项。
$ python parser_prog.py 'str\1*?' '-str2!'
我尝试过单引号和双引号,有没有办法确保Python将其解释为原始字符串? (我不在解释器中,这是在shell命令行上,所以我不能使用pythonic表达式,如r'str1'
)
感谢您的任何提示!
答案 0 :(得分:2)
正如你自己所说,Python只在shell处理后才看到字符串。命令行参数'-f'
和-f
看起来与被调用程序完全相同,并且没有办法对它们进行说明。也就是说,我认为argparse
支持--
参数来表示选项的结束,并且此后的所有内容都被视为位置参数。