将命令行参数传递给Python whos字符串包含元字符

时间:2013-07-24 20:40:42

标签: python argparse

我试图从命令行(即$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'

感谢您的任何提示!

1 个答案:

答案 0 :(得分:2)

正如你自己所说,Python只在shell处理后才看到字符串。命令行参数'-f'-f看起来与被调用程序完全相同,并且没有办法对它们进行说明。也就是说,我认为argparse支持--参数来表示选项的结束,并且此后的所有内容都被视为位置参数。