[英]Why does my subprocess.call work only when shell = True? Python
我正在使用 subprocess.call() 從特定目錄執行命令。
不使用shell = True
scrcpyPath = "C:\\Users\\H\\Downloads\\scrcpy-win64-v1.14"
subprocess.call(["scrcpy", "--window-title", "'Mydevice'"], cwd = scrcpyPath)
我收到以下錯誤
FileNotFoundError: [WinError 2] 系統找不到指定的文件。
我已經設法使用 `shell = True' 使它工作
subprocess.call(f"scrcpy --window-title 'Mydevice'", cwd = scrcpyPath, shell = True)
但是當我在 window 標題Mydevice
中添加空格時,它停止工作。
subprocess.call(f"scrcpy --window-title 'My device'", cwd = scrcpyPath, shell = True)
我收到以下錯誤
錯誤:意外的附加參數:1'
我使用格式化字符串的原因是我希望 window 標題是一個變量,但同樣 - 當我添加空格時它不起作用。
subprocess.call(f"scrcpy --window-title 'Device {deviceName}'", cwd = scrcpyPath, shell = True)
我找到了解決方案。 我認為我錯誤地使用了cwd
。
subprocess.call([f"{scrcpyPath}\\scrcpy", "--window-title", f"'{deviceName}'"])
您沒有正確拆分 arguments; 基本上命令行中的任何空格分隔都應該是單獨的 arguments,並且當它們作為單獨的 arguments 傳遞時不需要 shell 引用。 你想要的是:
subprocess.call(["scrcpy", "--window-title", "Mydevice"], cwd=scrcpyPath)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.