为什么在Windows XP上使用Python的os.system()命令需要在开头添加两个双引号才能运行?

2024-05-15 20:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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"')

Tags: and命令comyousettingswindowsgoogle浏览器
1条回答
网友
1楼 · 发布于 2024-05-15 20:55:05

因为在你的道路上有“”个空格。C:\Documents and Settings\..看到这两个空格了吗?否则,它将选择C:\Documents作为二进制文件,and作为第一个参数,Settings\..作为另一个参数。。等等。你这样说:这整件事是一个二进制C:\Documents and Settings\..,而{}是我的论点。在

有道理吗?在

相关问题 更多 >