我在Windows XP上遇到了一些非常奇怪的行为。我使用Python执行一个命令,使用桌面上文件夹中的快捷方式文件打开浏览器。在
以下是我希望做的工作:
os.system(r'"C:\Documents and Settings\you\Desktop\Chrome Browsers\Google Chrome 46.lnk" "chrome.google.com/webstore"')
它是一个原始字符串,所以所有的反斜杠都是实际的反斜杠。我可以通过将echo放在命令的开头来判断这是真的。(即。操作系统('echo“C:\Documents and Settings\blah\blahchrome.google.com/webstore“'))
使用echo返回以下结果:
46\Chrome浏览器和Chrome浏览器\lnkchrome.google.com/webstore““
这看起来像是一个很好的Windows命令,是吗?是的。复制并粘贴到命令提示符中运行良好。但是实际的命令(没有回音)失败了。错误说明
'C:\Documents' is not recognized as an internal or external command.
对于未加引号的路径,这是一个相当标准的错误。但是等等,我们回应的命令很好,所以应该运行,对吧?我想不是。。。在
通过反复试验,我终于找到了一些行之有效的方法。下面这一行是我启动浏览器的唯一方法:
^{pr2}$没错,显然解决方案是在命令的开头添加一个额外的双引号,并在第二个参数之前去掉双引号。在
对我来说,这看起来像是一个空字符串,没有引号的路径带有未经转义的空格,然后是一个以空格开头的带引号的url。在
如果我回显该命令,它将返回您预期的结果:
""C:\Documents and Settings\you\Desktop\Chrome Browsers\Google Chrome 46.lnk" chrome.google.com/webstore"
但它起作用了!将回显结果粘贴到命令行失败,之前出现“C:\Documents not recognized”错误,但是Python命令仍然会将浏览器打开到正确的页面。在
有人能解释一下这里发生了什么事吗?我真的被这种行为弄糊涂了,因为这根本不是我所期望的。在
注:这种行为在XP以前的所有Windows操作系统上都是完全不同的。对于Vista和更新版本,命令为:
os.system(r'"C:\Users\you\Desktop\Chrome Browsers\Google Chrome\Google Chrome 46.lnk" "chrome.google.com/webstore"')
因为在你的道路上有“”个空格。}是我的论点。在
C:\Documents and Settings\..
看到这两个空格了吗?否则,它将选择C:\Documents
作为二进制文件,and
作为第一个参数,Settings\..
作为另一个参数。。等等。你这样说:这整件事是一个二进制C:\Documents and Settings\..
,而{有道理吗?在
相关问题 更多 >
编程相关推荐