带引号和变量的Python子过程命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了带引号和变量的Python子过程命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1731字,纯文字阅读大概需要3分钟。
内容图文
![带引号和变量的Python子过程命令](/upload/InfoBanner/zyjiaocheng/691/1a06904c018c489386016590f8244bfb.jpg)
我有一个想要与子进程一起运行的复杂命令.它包含单引号和双引号,我想添加一些变量.
这是字符串:
gitlab create_merge_request 5 "{} - New merge request - {}" "{source_branch: '{}', target_branch: 'dev', assignee_id: 1}" --json
我想在“新合并请求”部分周围保留引号(它包含两个变量,在“ source_branch”变量周围.“ source_branch”部分中的花括号也引起问题.
当我像这样格式化字符串时:
gitLabCreateMerge = ('/usr/local/bin/gitlab create_merge_request 5 ', str(committerUser), ' requested - Automated Merge Request- ', str(reviewerUser), "'{source_branch:", str(branchName), " target_branch: 'dev', assignee_id: 1}' --json")
看起来像这样:
('/usr/local/bin/gitlab create_merge_request 5 ', 'alice', ' requested - Automated merge request - joe ', "'{source_branch:", 'testdevbranch', " target_branch: 'dev', assignee_id: 1}' --json")
解决方法:
使用子进程,最好传递一个字符串列表,而不是传递要由外壳程序评估的字符串.这样,您无需担心平衡双引号(以及转义潜在的可执行值).
将花括号加倍可以将其设为escaped from string formatting.
牢记这两个注意事项,我可以这样做:
committerUser = 'alice'
reviewerUser = 'joe'
branchName = 'testdevbranch'
cmd = ["gitlab",
"create_merge_request",
"5",
f"{committerUser} - New merge request - {reviewerUser}",
f"{{source_branch: '{branchName}', target_branch: 'dev', assignee_id: 1}}",
"--json"]
subprocess.Popen(cmd, …)
我在这里使用Python 3.6的f-strings,但是也可以通过str.format()方法来完成
"{} - New merge request - {}".format(committerUser, reviewerUser),
"{{source_branch: '{}', target_branch: 'dev', assignee_id: 1}}".format(branchName),
或通过串联显式显示,这可能比尝试记住双花括号的含义更具可读性.
committerUser + " - New merge request - " + reviewerUser,
"{source_branch: '" + branchName + "', target_branch: 'dev', assignee_id: 1}",
内容总结
以上是互联网集市为您收集整理的带引号和变量的Python子过程命令全部内容,希望文章能够帮你解决带引号和变量的Python子过程命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。