利用Windows的Python 3.4.2我要與當前運行腳本的這樣的文件夾,打開資源管理器:瀏覽器不顯示文件夾
import os, subprocess
subprocess.check_call(['explorer', os.path.dirname(__file__)])
相反,我看到該探險家被打開了默認文件夾 「C:\用戶\ XX \文件」,並拋出一個錯誤:
Traceback (most recent call last):
File "C:/XXX/YYY.py", line 9, in <module>
subprocess.check_call(['explorer', os.path.dirname(__file__)])
File "C:\Python34\lib\subprocess.py", line 561, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['explorer', 'C:/XXX']' returned non-zero exit status 1
雖然os.path.dirname
回報與Windows斜槓(反斜槓是路徑分隔符),你的路徑可以複製並粘貼到探險家,它會打開位置很好。 (XXX是路徑部分,YYY是文件名部分)
此外,如果您手動編輯路徑(因爲它在瀏覽器中有反斜槓),即使這樣命令也會失敗。
subprocess.check_call(['explorer', r'C:\Users'])
但至少Explorer將打開正確的目錄,儘管拋出了同樣的錯誤的(所以也許使用call
代替check_call
)。
這是怎麼回事?如何在資源管理器中顯示正在運行的Python腳本文件的文件夾?
_「你正在傳遞一個空字符串」_不同意'Command'['explorer','C:/ XXX']'返回的非零出口的錯誤信息... – Eric
應用'os.path .abspath(__ file __)'並使用'subprocess.call'而不是'subprocess.check_call'修復了我的問題。謝謝。然而,這不是因爲路徑是空的(不是),而是因爲'abspath'將斜槓轉換爲反斜槓。即使然後瀏覽器的非正常退出代碼仍然存在,但只要它顯示正確的文件夾,我不會抱怨... – Trilarion
@Trilarion和埃裏克你們兩個都是完全正確的;我已經更新了我的答案。我欺騙了自己,因爲如果你發送空字符串,你會得到相同的症狀。大笨笨的我。 –