popen 中整个字符串命令和字符串列表之间的区别

2024-01-27

我发现大多数程序员建议使用字符串列表来表示 popen 中的命令。然而,在我自己的项目中,我发现整个字符串在更多情况下都有效。

例如下面的作品

subprocess.Popen('pgrep -f "\./run"', stdout=subprocess.PIPE, shell=True).wait()

while

subprocess.Popen(['pgrep', '-f', '"\./run"'], stdout=subprocess.PIPE, shell=True).wait()

才不是。

我可以知道这两种实现方式有什么区别,为什么第二种方式不能按预期工作?


第二个不应该有shell=True范围。相反,它应该是:subprocess.Popen(['pgrep', '-f', '"\./run"'], stdout=subprocess.PIPE).wait().

The shell参数设置是否在单独的 shell 中执行命令。也就是说,如果应该生成一个新的 shell 来执行命令,则该命令必须由 shell 解释才能运行。

然而,当提供字符串列表时,这不会产生第二个 shell,因此(至少)更快。它也更适合用于处理变量输入,因为它避免了字符串插值。

See: https://stackoverflow.com/a/15109975/1730261 https://stackoverflow.com/a/15109975/1730261

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

popen 中整个字符串命令和字符串列表之间的区别 的相关文章

随机推荐

  • 具有 SFINAE 虚拟参数的不明确模板

    考虑一种需要验证类型的情况T与另一个模板g 可能是一些enable if表达式 例如 在另一个模板的虚拟参数内 如下所示 template
  • ConnectionString 属性尚未初始化

    我查看了不同论坛上的很多帖子 其他人也收到了同样的错误 大多数人表示他们没有正确引用 web config 文件中的连接字符串 或者他们在设置连接字符串之前尝试打开连接 好吧 如果对我来说是这种情况 那么它如何在两个不同的系统上工作 但在第
  • 如何在 CertCreate 自签名证书函数中指定密钥大小

    我正在使用该功能证书创建自签名证书 https msdn microsoft com en us library windows desktop aa376039 v vs 85 aspx生成证书 我需要指定密钥大小2048 我不知道如何提
  • javascript按索引号进行字符串分配怪癖

    a 12345 a 2 3 a 2 9 console log a gt 12345 到底是怎么回事 这个怪癖导致我痛苦地调试了1个小时 如何以明智的方式避免这种情况 不能使用方括号重写字符串中的各个字符 仅 getter 即读取 访问可用
  • Github 操作 `on` 中没有定义事件触发器

    我创建了一个管道 我想在每次推送任何分支时触发 有我的default yml name default on push branches jobs build runs on macOS latest steps uses actions
  • 模板类的 typedef?

    是否有可能typedef使用模板的长类型 例如 template
  • 反应本机要求不适用于图像源

    给出下面的代码 反应本机抱怨 Requiring unknown module images Foo png If you are sure the module is there try restarting the packager o
  • 在 Android 中使用 OpenCV 检测图像中的圆圈

    我正在开发一个安卓应用程序其中我必须检测现有图像上的圆圈 从图库浏览或从相机捕获 浏览 捕获的图像将显示在 ImageView 上 顺便说一句 我正在使用OpenCV Android 库我正确地编译了它 对我的 Android 应用程序有任
  • 我可以同时使用 SOAP Webservices 和 Spring MVC

    我有一个 Spring MVC 项目 我写了一段类似的代码 Controller RequestMapping CallBack WebService name NotificationToCP targetNamespace http S
  • 当列不存在时 Postgres 返回默认值

    我有一个查询 如果缺少某个列 我本质上需要一个后备值 我想知道我是否可以纯粹在查询中处理这个问题 而不是先探测并发送单独的查询 本质上我正在寻找相当于COALESCE处理缺失列的情况 想象一下以下两张表 T1 id title extra
  • Visibility.Hidden 状态的解决方法 - Windows Phone 8.1 应用程序开发

    我无法将进度条的可见性状态指定为隐藏 我读过 在 WPF 模型中 隐藏表示对象不应呈现的可见状态 但仍应占用 WPF 布局中的空间 Silverlight 不支持隐藏 是否有解决方法可以达到与我的应用程序中隐藏相同的效果 Visibilit
  • Beaglebone GPIO 输入不起作用

    我正在使用 beaglebone 通过 sysfs 接口访问特定引脚的数字输入 我可以更改输出状态 但不能更改输入 我所做的是 我有两个引脚 pinA 和 pinB pinA 我将其输出 pinB 我将其输入 将 pinA 连接到 pinB
  • 这个标准化功能如何工作?

    我正在做 Junit 教程 遇到了正在测试的标准化函数 它的定义如下 public static String normalizeWord String word try int i Class normalizerFormClass nu
  • 如何获取运行 C# 应用程序的服务器的 IP 地址?

    我正在运行一个服务器 我想显示我自己的IP地址 获取计算机自己 如果可能的话 外部 IP 地址的语法是什么 有人写了下面的代码 IPHostEntry host string localIP host Dns GetHostEntry Dn
  • 在 FakeRequest 中使用 MultipartFormData 进行框架测试

    我目前正在为 Play Framework 2 2 x 应用程序编写一些 Specs2 测试 该应用程序接受 MultipartFormData 提交作为其功能的一部分 我已经使用以下形式成功地使用文本和 JSON 主体编写了其他测试 re
  • 在 GHCi 中定义函数签名

    在 Haskell 的解释器 GHCi 中定义函数签名不起作用 复制一个例子这一页 https wiki haskell org Function Prelude gt square Int gt Int
  • 如何在android kotlin中使用一个复选框选择多个复选框?

    这是我的活动代码 class SelectCoursesActivity AppCompatActivity override fun onCreate savedInstanceState Bundle super onCreate sa
  • 如何检查php-fpm是否安装并正确运行?

    如标题 如何检查 php fpm 状态 正在运行吗 有多少请求服务 谢谢 Is ps ef grep php fpm第一部分的答案太简单了 您还可以使用可通过以下命令启用的 ping 功能ping path配置指令 http www php
  • JavaScript 文件加载顺序和依赖关系管理

    只是想知道这个 我有几个单独的 javascript 文件 它们都包含基于模块模式的代码 一些模块具有其他一些模块作为依赖项 如果我知道在加载页面之前不会在 HTML 上调用任何代码 那么文件加载的顺序仍然重要吗 模块代码位于立即函数内的事
  • popen 中整个字符串命令和字符串列表之间的区别

    我发现大多数程序员建议使用字符串列表来表示 popen 中的命令 然而 在我自己的项目中 我发现整个字符串在更多情况下都有效 例如下面的作品 subprocess Popen pgrep f run stdout subprocess PI