2016-11-28 102 views
0

我将一个URL作为第一个参数传递给脚本。但是如果它包含一个等号(=),它将不会采用完整的URL。例如,如果myscript.py包含:Python 3.4 sys.argv [1]

site = sys.argv[1] 

,我叫

myscript.py https://www.google.com/#q=boxing 

它等号之前停止,并在完整的URL不走。

site = sys.argv[1] 
print(site) 

输出:

https://www.google.com/#q= 

我知道我可以把完整的URL在双引号,它会得到处理,但什么自动化传递参数,而不必担心把双引号。

有人请提供一些指导。谢谢。

+0

这适用于我的Linux机器,你使用什么操作系统?一般来说,因为urls可以使用也被shell使用的元字符,所以你必须做一些事情。 “自动传递参数”是什么意思?如果你正在用python做这件事,你可以使用'subprocess.call(['myscript.py','https://www.google.com/#q=boxing'])''。在linux上,你完全跳过了一个子shell,并且在Windows上为你逃脱了字符串。 – tdelaney

+0

我使用64位Windows 7和Python 32位3.4版本。我怎么逃避等号,因为这似乎是我的大多数网站的问题。 – PappyC

+0

我没有Windows机器,所以不能测试,但我认为等号很好,对于cmd ....你使用的是电源外壳?这是一个提示http://stackoverflow.com/a/26194007/642070,但我不确定! – tdelaney

回答

0

我应该更具体一点,我通过Windows批处理文件调用我的python脚本。 (=)是一个分隔符,并将URL的其余部分作为参数。我可以通过在URL上加双引号来解决这个问题。我以为Python是造成这个问题,但它一直是Windows命令提示符。