python - 仅当它们存在于 python 中时才将命令行选项添加到子进程
问题描述
我想通过带有命令行选项的子进程运行 linux 命令。问题是,当某些选项包含空字符串时,该命令将失败。
!#/usr/bin/env python3
import subprocess
args = {'user': 'name', 'pw': ''}
subprocess.call([
'foocommand',
'user', args['user'],
'pw', args['pw']
])
此命令将失败,因为args['pw']
包含一个空字符串。我可以仅在子进程存在时将命令行选项应用于子进程吗?
解决方案
从字典中动态构建参数列表。
cmd = ['foocommand']
for name, val in args.items():
if val:
cmd += [name, val]
推荐阅读
- sapui5 - SAP UI5 BlockLayout - 如何设置可点击块?
- database - id 和 key 引用之间的妥协
- batch-file - 批处理文件未将文件内容分配给变量
- android - 如何从 crashlytics 清除我的应用注销数据
- python - 有没有为 AVX 指令编译的 TensorFlow 版本?
- visual-studio-code - 服务器代码VS代码上忽略的断点
- cmake - CMake使用自定义文件的默认值扩展环境变量
- android - 将应用程序的测试版发布为生产版
- vue.js - 用axios post form symfony访问vue js数据
- sql - SQL插入语句导致奇怪的(笛卡尔积)结果