Python:从命令行调用时如何启用kwargs?(也许使用argparse)

John A Zoidberg博士:

假设我有模块myscript.py; 该模块是生产代码,通常称为%dir%>python myscript.py foo bar

我想扩展它以接受关键字参数。我知道我可以使用下面的脚本接受这些参数,但是不幸的是,必须使用

%dir%>python myscript.py main(foo, bar)

我知道我可以使用该argparse模块,但是我不确定该怎么做。

import sys

def main(foo,bar,**kwargs):
    print 'Called myscript with:'
        print 'foo = %s' % foo
        print 'bar = %s' % bar
        if kwargs:
            for k in kwargs.keys():
                print 'keyword argument : %s' % k + ' = ' + '%s' % kwargs[k]   

if __name__=="__main__":
    exec(''.join(sys.argv[1:]))
Moon Cheesez:

如果您希望像在main函数中那样传递关键字参数key=value,则可以这样做:

import sys

def main(foo, bar, *args):
    print "Called my script with"

    print "foo = %s" % foo
    print "bar = %s" % bar

    for arg in args:
        k = arg.split("=")[0]
        v = arg.split("=")[1]

        print "Keyword argument: %s = %s" % (k, v)


if __name__ == "__main__":
    if len(sys.argv) < 3:
        raise SyntaxError("Insufficient arguments.")
    if len(sys.argv) != 3:
        # If there are keyword arguments
        main(sys.argv[1], sys.argv[2], *sys.argv[3:])
    else:
        # If there are no keyword arguments
        main(sys.argv[1], sys.argv[2])

一些例子:

$> python my_file.py a b x=4
Called my script with
foo = a
bar = b
Keyword argument: x = 4
$> python my_file.py foo bar key=value
Called my script with
foo = foo
bar = bar
Keyword argument: key = value

但是,这假定键和值之间没有空格,key = value将不起作用。

如果要查找--argument各种关键字参数,则应使用argparse

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从命令行下载python?

从命令行调用Python SimpleHTTPServer(无缓存选项)

从命令行调用Python SimpleHTTPServer(无缓存选项)

如何从命令行使用'java'调用Groovy

如何从命令行调用Eclipse插件?

从命令行调用时将包含目录添加到CMake

从命令行调用Python类方法

如何使用PyCharm从命令行调试python脚本?

如何在Python中使用argparse.ArgumentParser从命令行传递和解析字符串列表?

如何从命令行初始化要在多次调用Python中使用的对象

如何使用argparse从命令行和代码传递参数?

如何从命令行调用vb方法?

如何使用python argparse解决命令行问题?

从命令行启用远程VNC?

如何从命令行禁用/启用Microsoft Security Essentials?

如何使用自定义命令从命令行执行python脚本?

从命令行调用时找不到python模块

从bash脚本调用时获取Python命令行输出

如何从命令行多次调用MATLAB,每次都使用相同的MATLAB实例

如何从命令行而不是SQL调用PL / pgSQL

从命令行调用时,如何无条件打开存在的所有折叠而没有错误?

如何从命令行调用用户开关?

从命令行/ PyCharm调用Python包

如何从命令行启用和禁用GNOME扩展?

要求从命令行调用文件

使用参数从命令行/.bat 调用 Julia GTK

如何保存从命令行调用的 php 文件的输出?

如何从命令行启用 KDE 中的自动登录

在 eclipse 调用时从命令行指定 eclipse 工作区