處理子流程時,變更工作目錄會帶來挑戰。嘗試在子目錄或超級目錄中導航時會出現此問題。然而,關鍵在於理解呼叫程式和執行命令之間的差異。
在您的程式碼中,您試圖呼叫名為「cd」的程序,這是一種無效的方法。相反,您應該調用名為“cd”的命令。
錯誤說明:
「subprocess.call(['cd ..'])」語句觸發 OSError 因為「cd」是 shell 內部的。因此,您需要在shell 中執行它,如以下修改所示:
subprocess.call('cd ..', shell=True)
為什麼「shell=True」毫無意義:
儘管它表面上的修復,使用“shell=True”實際上是毫無意義的。這是因為沒有進程可以修改另一個進程的工作目錄,這意味著子 shell 將更改其目錄並立即退出。
替代解決方案:
成功更改工作目錄在執行子程序之前,您可以使用替代方法:
使用"os.chdir()":
wd = os.getcwd() os.chdir("/destination/directory") subprocess.Popen("ls") os.chdir(wd)
在「子進程」中使用「cwd」參數:
subprocess.Popen("ls", cwd="/destination/directory")
這些替代方法允許您在執行子程序之前指定工作目錄,並確保命令在所需的目錄中執行。
以上是如何在Python中更改子程序的工作目錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!