python - subprocess.run 导致空间解释为 arg?
问题描述
我正在编写一个非常简单的测试套件,当我调用 时subprocess.run(["./name-of-binary", args], capture_output=True, shell=True)
,它会存储命令的输出。当我用 调用它时args = ""
,它似乎将一个空格传递给二进制文件。当我使用实际空间运行二进制文件时,一切正常。这是怎么回事?谢谢!
解决方案
可能的解决方案(推荐):
if args:
subprocess.run(["./name-of-binary"], capture_output=True)
else:
subprocess.run(["./name-of-binary", args], capture_output=True)
或者:
subprocess.run("".join(["./name-of-binary", args]), capture_output=True, shell=True) # this maybe will cause shell injection.
我认为原因是执行此命令时,subprocess
会在这些元素之间自动添加空格。所以直接的方法是直接传递字符串。
推荐阅读
- java - Android - 收到推送通知 FCM 后,如何在我的 Activity 中更新数据或 UI?
- c# - 空合并赋值运算符的行为
- kubernetes - Kubernetes。是否可以将卷安装到包含 pod id 的路径?
- file - DSpace 文件的位置
- r - 更改数据框列表中的一列并使用应用函数保留 changde 数据框而不是更改输出
- c# - 在 WebBrowser 控件中获取 HtmlElement 的当前/计算样式
- python - Firebase 云消息传递 HTTP v1 发送错误 - 400 客户端错误:对 url 的错误请求:https://fcm.googleapis.com/v1/projects/
/消息:发送 - javascript - 如何以 100% 全宽嵌入 YouTube iframe 视频
- excel - 当我尝试打开宏时 Excel 关闭
- php - 如何使用 php 进行多选选项?