Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python可执行文件中的kwargs_Python_Executable_Keyword Argument - Fatal编程技术网

python可执行文件中的kwargs

python可执行文件中的kwargs,python,executable,keyword-argument,Python,Executable,Keyword Argument,我试图创建一个可以从命令行调用的程序,并在Python2.6中使用关键字参数。到目前为止,我已经尝试: #!/usr/bin/python def read(foo = 5): print foo return 0 if __name__ == '__main__' read() 当我尝试从命令行运行此命令时:/test.py程序按预期打印5。有没有办法使用/test.py foo=6?我想保留关键字参数 这似乎是一个简单的问题,但我还没有找到一个好的源代码。pytho

我试图创建一个可以从命令行调用的程序,并在Python2.6中使用关键字参数。到目前为止,我已经尝试:

#!/usr/bin/python
def read(foo = 5):
    print foo
    return 0
if __name__ == '__main__'
    read()
当我尝试从命令行运行此命令时:
/test.py
程序按预期打印5。有没有办法使用
/test.py foo=6
?我想保留关键字参数


这似乎是一个简单的问题,但我还没有找到一个好的源代码。

python内置了一个库来帮助您实现向脚本传递命令行参数 . 这个用法和你在问题中描述的有点不同

在基本级别上,您可以通过访问所有命令行参数,这将是一个参数列表

抱歉,我应该提到python 2.6库被称为类似这样的东西

if __name__ == '__main__':
    kwargs = dict(x.split('=', 1) for x in sys.argv[1:])
    read(**kwargs)
这就是说,对于习惯命令行的人来说,argparse和optparse可能会为您提供更健壮、更自然的功能。(更不用说,支持字符串以外类型的参数。)


哦,如果你真正想要的只是交互式地使用你的函数,那就使用交互式解释器;
python
ipython
。您需要将代码放入一个以
.py
结尾的文件中并导入它,然后您可以调用它。

一个不太常见但非常有趣的替代方法是:一个库,它从您为程序编写的帮助消息中生成参数解析器().

请查看仅用于此目的的模块。感谢您的快速评论。不幸的是,我使用的是python2.6,因此,
argparse
不可用,我还没有弄清楚如何使用带有关键字参数的
sys.argv
,但我仍在使用它。@greatscott:python2.6中有
getopt
,这在您的情况下应该可以。@dm:Edited以反映python版本。谢谢你的帮助。明天我会查看
getopt
optpass
,谢谢。实际上,我写这篇文章是为了一位同事,他想在命令行之外运行所有东西,而不是通过
python
ipython
工作。不过我很感谢你的帮助。我将签出
optpass