首页 > 解决方案 > 仅当它们存在于 python 中时才将命令行选项添加到子进程

问题描述

我想通过带有命令行选项的子进程运行 linux 命令。问题是,当某些选项包含空字符串时,该命令将失败。

!#/usr/bin/env python3

import subprocess

args = {'user': 'name', 'pw': ''}

subprocess.call([
    'foocommand',
    'user', args['user'],
    'pw', args['pw']
])

此命令将失败,因为args['pw']包含一个空字符串。我可以仅在子进程存在时将命令行选项应用于子进程吗?

标签: pythonpython-3.xsubprocess

解决方案


从字典中动态构建参数列表。

cmd = ['foocommand']
for name, val in args.items():
    if val:
        cmd += [name, val]

推荐阅读