让我们首先解释什么是命令行界面(CLI):命令行界面或命令语言解释器,也称为命令行用户界面,控制台用户界面和字符用户界面是一种与计算机程序交互的方式,用户在其中以连续文本行的形式向程序发出命令。通过创建命令行界面(CLI),可以使程序变得强大和具有交互性。CLI允许您接受命令行参数(操作系统命令行上程序名称后面的信息),以便为程序添加额外的功能,使代码易于使用和灵活。根据程序的不同,这些参数可用于添加附加功能,例如查看帮助文档、指定输出文件或启用测试正常使用时可能会出现问题的功能。当我们第一次开始使用Python编程时,我们大多数人只是收集用户输入,像这样交互:defmain():first=input("Enteryourfirstname:")last=input("Enteryourlastname:")print(first+''+last)虽然此代码适用于简单脚本,但不够灵活。当用户运行这个程序时,他们被限制在一组定义的规则中。例如,如果我想将输出记录到文本文件中怎么办?作为用户,您可以创建一个命令行界面来为这些问题提供解决方案。最佳方式"src="http://p3.pstatp.com/large/pgc-image/5b4f9a79a6624f63b433053d0c17c16c"_fcksavedurl="http://p3.pstatp.com/large/pgc-image/5b4f9a79a6624f63b433053d0c17c16c"://p3.pstatp.com/large/pgc-image/5b4f9a79a6624f63b433053d0c17c16c"width="640"height="387">ImportantNotes创建CLI时,重要的是要考虑以下内容:必需参数:哪些参数对于程序来说是绝对必要的上班?文档:写出每个选项和参数的功能很重要,这样新用户才能知道您的程序是如何工作的。处理错误情况:让用户确切知道哪里出错了运行时状态:如果任务没有立即完成,你应该打印出当前进度使用argparse读取参数Argparse是一个用于解析命令行参数的Python标准库模块。作为程序员,你可以定义接受参数的内容,argparse将知道如何从sys.parse中解析这些参数。当用户向程序提供无效参数时,argparse还会自动生成帮助和使用信息并输出错误。它使用起来非常简单并且可以很容易地编写IntuitiveCLI。首先,创建一个名为test_cl.py的新文件,导入模块并初始化一个新的解析器:importargparseparser=argparse.ArgumentParser()parser.parse_args()现在使用--help选项运行代码:python3test_cli.py--help你应该会收到一条不错的默认帮助消息,如下所示:usage:test_cli.py[-h]optionalarguments:-h,--helpshowthishelpmessageandexit恭喜您创建了第一个命令行界面!现在让我们添加一条欢迎消息,简要地让您的用户知道这个程序做了什么:welcome="Practicingcreatinginteractivecommand-lineinterfaces"parser=argparse.ArgumentParser(description=welcome)parser.parse_args()现在运行带有-h标志的程序。您应该会看到您的欢迎信息。添加参数假设我们正在编写一个程序来抓取网页。我们可能需要的一些参数是网页的域-domain或-d,将输出记录到输出文件的选项-ofile或-o,以及可能输出到控制台的特定行数-lines或-l选项。对于此示例,我们将使domain参数成为必需参数,而ofile和lines参数将成为可选参数。我们可以使用.add_argument轻松地向argparseCLI添加额外的参数,它允许我们定义使用细节。我们可以添加必要的参数--domain,例如:parser.add_argument('--domain','-d',required=True,help='domainnameofthewebsiteyouwanttoscrape.i.e."https://ahadsheriff.com"')现在运行带-h参数的程序,看你写的文档!因为--domain是一个必需的参数,尝试在没有任何标志的情况下运行该程序,您将收到以下消息:usage:test_cli.py[-h]--domainDOMAINtest_cli.py:error:thefollowingargumentsarerequired:--domain/-dsucceeded!现在使用argparse添加额外的参数。如果您不指定哪些参数是必需的,argparse将假定它们是可选的。您还可以设置参数的类型,对于--lines我们采用整数。您还可以为.add_argument设置其他有用的选项-如action=parser.add_argument('--ofile','-o',help='defineoutputfiletosaveresultsofstdout.i.e."output.txt"')parser.add_argument('---lines','-l',help='numberoflinesofoutputtoprinttotheconsole"',type=int)现在测试你的代码以确保一切正常。一个简单的方法是将参数的值存储为变量和打印这些值。args=parser.parse_args()domain=args.domainofile=args.ofilelines=args.linesprint("domain:",domain)print("outputfile:",ofile)print("lines:",lines)译文:https://medium.com/@ahadsheriff/the-best-way-to-make-command-line-interfaces-in-python-e00e8b9d10c9
