python - 当 arg 已经包含 " " 和 ' ' 引号时,如何将字符串 arg 提交给 subprocess.run(arg, shell=True)?
问题描述
我有以下命令需要使用 python 3.6 subprocess.run()
函数发出:
gsettings set org.gnome.shell enabled-extensions "['apple@gmail.com', 'orange@yahoo.com']"
因为@
符号是在该命令的列表元素中找到的,所以 run() 函数的shell
kwarg 必须设置为 True,即subprocess.run(arg, shell=True)
. 因此,该函数的语法规则要求将上述命令作为字符串提交,即
arg = "gsettings set org.gnome.shell enabled-extensions "['apple@gmail.com', 'orange@yahoo.com']" "
这就是我的困境。整个命令的字符串引号“”与原始命令中的字符串引号“”冲突。我该如何克服这个问题?
解决方案
转义"
或'
使用\
: \"
, \'
.
例子:
>>> v = "'\"\'"
>>> [ord(i) for i in v]
[39, 34, 39]
所以在你的情况下:
arg = "gsettings set org.gnome.shell enabled-extensions \"['apple@gmail.com', 'orange@yahoo.com']\" "
推荐阅读
- python - POST 请求适用于 POSTMAN,但不适用于烧瓶
- javascript - 我可以强制赛普拉斯使用特定的 IP 地址吗?
- android - 使用 kotlin 在 android 中与底部工作表进行数据绑定
- algorithm - 如果可能的话,是否有一种算法可以创建一条智能蛇来填充整个地图,而不会与其身体或墙壁的任何一部分发生碰撞
- javascript - 如何在 Javascript 中放置 PHP 动态生成的 JSON 列表
- java - 在 EC2 服务器上将 Java Spring Boot 服务部署到生产环境
- python - 读取文件并很好地输出它的最佳方法
- java - 从文件中读取对象,不考虑类型,从泛型类型推断读取方法
- sql - SQL Server 递归中的批处理
- html - 如何将这个 div 类放在右边?(HTML 5)