我们的想法是在运行脚本时添加一个标记(--slack
或-s
),这样我就不必每次都注释掉rep.post_report_to_slack()
方法我不想使用它。我跑的时候:
$ python my_script.py --slack
我收到错误:
my_script.py: error: unrecognized arguments: --slack
以下是代码:
def main():
gc = Google_Connection()
meetings = gc.meetings
rep = Report(meetings)
if args.slack:
rep.post_report_to_slack()
print('posted to slack')
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--slack', help='post to slack',
action='store_true')
args = parser.parse_args()
main()
答案 0 :(得分:2)
您的代码有效,但它依赖于args
在模块命名空间中可用,这不是很好,因为,一方面,它意味着您无法在不从命令调用脚本的情况下使用您的函数线。更灵活和传统的方法是编写函数来接受它需要的任何参数,然后将从argparse
获得的所有内容传递给函数:
# imports should usually go at the top of the module
import argparse
def get_meeting_report(slack=False):
gc = Google_Connection()
meetings = gc.meetings
rep = Report(meetings)
if slack:
rep.post_report_to_slack()
print('posted to slack')
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--slack', help='post to slack',
action='store_true')
args = parser.parse_args()
args = vars(args)
get_meeting_report(**args)
现在你也可以通过直接调用它来更容易地在argparse之外使用你的函数。