使用 argparse 运行我的脚本中的 2 个函数之一
目前我的 .py 脚本中有 2 个函数。
#1 连接到数据库并进行一些处理。
#2 对文件进行一些其他处理
目前,在运行脚本之前,我必须手动注释/取消注释我想要在 main if 语句块中运行的函数。
如何使用 argparse,以便它在运行脚本时询问我要运行哪个函数?
I currently have 2 functions in my .py script.
#1 connects to the database and does some processing.
#2 does some other processing on files
Currently before I run the script, I have to manually comment/uncomment the function I want to run in my main if statement block.
How can I use argparse, so it asks me which function to run when I run my script?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可以通过
action='store_const'
和const=直接告诉 ArgumentParser 对象具有您所需行为的函数或对象;
在add_argument()
调用中配对,或与set_defaults()
调用配对(当您使用子解析器时,后者最有用)。如果这样做,您可以在从解析返回的parsed_args
对象上查找您的函数,而不是在全局命名空间中查找它。举个小例子:
然后你可以这样称呼它:
It is possible to tell ArgumentParser objects about the function or object that has your desired behavior directly, by means of
action='store_const'
andconst=<stuff>
pairs in anadd_argument()
call, or with aset_defaults()
call (the latter is most useful when you're using sub-parsers). If you do that, you can look up your function on theparsed_args
object you get back from the parsing, instead of say, looking it up in the global namespace.As a little example:
And then you can call it like:
如果它只是运行 A 或 B 的标志,那么一个简单的“store_true”参数应该没问题。
或者,如果您想实际传递要调用的函数的名称,您可以这样做(有点黑客):
编辑:要处理整数参数,您只需指定类型即可
,如果您在此示例中选择,则可以简单地获取
parsed_args.func_arg
的值。If it's just a flag of run A or B, then a simple "store_true" argument should be fine.
Or if you want to actually pass in the name of the function to call, you can do it this (somewhat hackish) way:
edit : to handle an integer argument, you would simply specify the type
So, you can simply get
parsed_args.func_arg
for the value if you choose in this example.您可以考虑使用布料来实现此目的。
You might consider using fabric for this.