Python 2.7 如何在python中将符号作为命令行参数的一部分处理

Python 2.7 如何在python中将符号作为命令行参数的一部分处理,python-2.7,argparse,Python 2.7,Argparse,我在Python2.7中有一个程序,它使用argparse接受命令行参数,但是如果我试图输入一个包含一个符号的字符串,我会丢失该符号后面的字符 例如: 我有一个简单的python程序来测试命令行参数的输入,并简单地打印出为单个命令行参数输入的内容 本质上:print args.where 当我使用如下参数运行程序时: $ python args.py -a http://www.website.com?optionone=one&numbertwo=two 打印到屏幕上的唯一文本是:

我在Python2.7中有一个程序,它使用
argparse
接受命令行参数,但是如果我试图输入一个包含一个符号的字符串,我会丢失该符号后面的字符

例如:

我有一个简单的python程序来测试命令行参数的输入,并简单地打印出为单个命令行参数输入的内容

本质上:
print args.where

当我使用如下参数运行程序时:

$ python args.py -a http://www.website.com?optionone=one&numbertwo=two
打印到屏幕上的唯一文本是:

在使用sys和使用Argv打印时,我得到了类似的结果


如何输入完整字符串?

这是shell的问题。把论点用引号引起来

您可以用反斜杠将符号转义:

$ python args.py -a http://www.website.com?optionone=one\&numbertwo=two

我注意到引号确实正确,但在问题中忘了提到这一点。没有办法用它们吗?@John你用双引号还是单引号?IIRC,单引号应该保护符号…@John:这取决于你使用的外壳。如果shell认为一个与符号是一个对shell有特殊意义的字符(我认为几乎所有这些字符都是这样做的,甚至是Windows上的
cmd.exe
),那么您需要做一些事情,让shell将该字符作为参数的一部分传递给您。引用是一种常见的方式,而转义角色(正如丹尼尔·斯科特提到的)是另一种方式。