首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么只有当subprocess.call = True时,我的外壳才能工作?Python

为什么只有当subprocess.call = True时,我的外壳才能工作?Python
EN

Stack Overflow用户
提问于 2020-07-02 19:39:47
回答 1查看 66关注 0票数 0

我使用subprocess.call()来执行特定目录中的命令。

不使用shell = True

代码语言:javascript
运行
复制
scrcpyPath = "C:\\Users\\H\\Downloads\\scrcpy-win64-v1.14"
subprocess.call(["scrcpy", "--window-title", "'Mydevice'"], cwd = scrcpyPath)

我得到以下错误

FileNotFoundError: WinError 2系统找不到指定的文件。

我已经设法用` `shell = True‘让它工作了。

代码语言:javascript
运行
复制
subprocess.call(f"scrcpy --window-title 'Mydevice'", cwd = scrcpyPath, shell = True)

但是当我在窗口标题Mydevice中添加空格时,它停止工作。

代码语言:javascript
运行
复制
subprocess.call(f"scrcpy --window-title 'My device'", cwd = scrcpyPath, shell = True)

我得到以下错误

错误:意外的附加参数: 1‘

我使用格式化字符串的原因是,我希望窗口标题是一个变量,但同样,当我添加空格时,它不起作用。

代码语言:javascript
运行
复制
subprocess.call(f"scrcpy --window-title 'Device {deviceName}'", cwd = scrcpyPath, shell = True)

我找到了解决方案。我想我错误地使用了cwd

代码语言:javascript
运行
复制
subprocess.call([f"{scrcpyPath}\\scrcpy", "--window-title", f"'{deviceName}'"])
EN

回答 1

Stack Overflow用户

发布于 2020-07-02 19:51:05

您没有正确地拆分参数;基本上,命令行中的任何空格分隔都应该是单独的参数,并且当它们作为单独的参数传递时,不需要使用shell引号。你想要的是:

代码语言:javascript
运行
复制
subprocess.call(["scrcpy", "--window-title", "Mydevice"], cwd=scrcpyPath)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62695545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档