如何处理&符号作为Python中的命令行参数

问题描述:

我有一个Python 2.7中的程序,它接受使用​​的命令行参数,但是如果我尝试输入包含&符号的字符串,我会在该符号后丢失字符。如何处理&符号作为Python中的命令行参数

例如:

我有一个简单的Python程序只是为了测试的命令行参数的输入,只需打印出什么是为一个命令行参数输入。

本质:print args.where

当我与这样的参数运行该程序:

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

打印在屏幕上的唯一的文本是: http://www.website.com?optionone=one

我有类似的结果使用时系统和打印使用Argv

我怎样才能得到完整的字符串entere d?

这是你的shell的问题。将参数放在引号中。

+0

我注意到,报价做了正确的工作,但忘了提及的是,在这一问题。有没有办法使用它们? – John 2014-09-06 20:55:52

+0

@John你使用双引号还是单引号? IIRC,单引号应该保护&符... – MattDMo 2014-09-06 21:37:46

+0

@John:它取决于你使用的shell。如果shell认为&符号是一个对shell有特殊含义的字符(因为我认为它们几乎全部都是 - 即使Windows上的cmd.exe也是如此),那么你需要做一些事情来让shell通过该角色作为参数的一部分。引用是一种常见的方式来做到这一点,逃避角色(如丹尼尔斯科特所说)是另一种。 – 2014-09-07 04:55:11

您可以使用反斜线的符号:

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