簡體   English   中英

為什么Windows XP上Python的os.system()命令在開始運行時需要兩個雙引號?

[英]Why does Python's os.system() command on Windows XP require two double quotes at the beginning to run?

我在Windows XP上遇到了一些非常奇怪的行為。 我正在使用Python執行命令,以使用桌面上文件夾中的快捷方式文件打開瀏覽器。

以下是我希望完成的工作:

    os.system(r'"C:\Documents and Settings\you\Desktop\Chrome Browsers\Google Chrome 46.lnk" "chrome.google.com/webstore"')

這是一個原始的字符串文字,因此所有的反斜杠都是實際的反斜杠。 我可以通過在該命令的開頭放置echo來確認這是正確的。 (即os.system('echo“ C:\\ Documents and Settings \\ blah \\ blah chrome.google.com/webstore”'))

使用echo返回以下內容:

“ C:\\ Documents and Settings \\ you \\ Desktop \\ Chrome瀏覽器\\ Google Chrome 46.lnk”“ chrome.google.com/webstore”

看起來像Windows命令一樣,是嗎? 好吧 將其復制並粘貼到命令提示符中可以正常運行。 但是實際命令(沒有回顯)失敗。 錯誤指出

'C:\\ Documents'不被識別為內部或外部命令。

對於未引用的路徑,這是一個非常標准的錯誤。 但是等等,我們回顯的命令很好,所以它應該運行,對嗎? 我猜不會...

通過反復試驗,我找到了行之有效的方法。 以下是我能夠啟動瀏覽器的唯一方法:

os.system('""C:\Documents and Settings\you\Desktop\Chrome Browsers\Google Chrome 46.lnk" chrome.google.com/webstore"')

沒錯,顯然解決方案是在命令開頭添加一個額外的雙引號,並在第二個參數之前刪除雙引號。

對我來說,它看起來像是空字符串,帶有未轉義空格的未引用路徑,然后是帶空格開頭的帶引號的url。

如果我回顯該命令,它將返回您期望的結果:

""C:\Documents and Settings\you\Desktop\Chrome Browsers\Google Chrome 46.lnk" chrome.google.com/webstore"

但這有效! 將該回聲結果粘貼到命令行失敗,並且之前出現“ C:\\ Documents not defined”錯誤,但是Python命令無論如何都會將瀏覽器打開到正確的頁面。

有人可以解釋一下這里發生了什么嗎? 我真的對這種行為感到困惑,因為它根本不是我所期望的。

PS此行為在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\\..看到2個空格嗎? 否則它將選擇C:\\Documents作為二進制文件, and作為第一個參數,將Settings\\..作為另一個參數。 您這樣說:整個事情是一個二進制C:\\Documents and Settings\\..chrome.google.com/webstore是我的觀點。

說得通?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM