簡體   English   中英

為什么我的 subprocess.call 只有在 shell = True 時才有效? Python

[英]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.

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