首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅当python中存在命令行选项时,才向子进程添加命令行选项

仅当python中存在命令行选项时,才向子进程添加命令行选项
EN

Stack Overflow用户
提问于 2018-06-30 03:40:23
回答 3查看 39关注 0票数 0

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

代码语言:javascript
复制
!#/usr/bin/env python3

import subprocess

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2018-06-30 03:45:52

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

代码语言:javascript
复制
cmd = ['foocommand']
for name, val in args.items():
    if val:
        cmd += [name, val]
票数 4
EN

Stack Overflow用户

发布于 2018-06-30 03:45:30

事先验证pw键或字典中的任何键中是否有值,然后使用适当的选项调用命令。你可以用很多方法来实现,例如:

代码语言:javascript
复制
if len(args['pw']) > 0: 
    # do stuff

我把它留给作者来决定如何做得最好。

票数 0
EN

Stack Overflow用户

发布于 2018-06-30 03:48:36

这应该是可行的。

代码语言:javascript
复制
import subprocess
from itertools import chain

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

subprocess.call(['foocommand'] + list(chain([(arg, value) for arg, value in args.items() if value])))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51108400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档