一、命令行參數簡介
命令行參數是指在命令行中輸入程序名稱後,在程序名稱後面緊接着一些參數,這些參數可以被程序接收並處理。在Python中,可以通過sys模塊的argv變量獲取命令行參數,argv是一個列表,其中第一個元素是程序名稱,從第二個元素開始是接收到的命令行參數。
import sys print(sys.argv)
運行以上代碼,如果在命令行中輸入python test.py -i input.txt -o output.txt,則輸出:
['test.py', '-i', 'input.txt', '-o', 'output.txt']
二、使用argparse模塊處理命令行參數
argparse是Python標準庫中的一個命令行參數解析模塊,通過使用argparse模塊,可以輕鬆地實現命令行選項和參數的解析。
下面是一個使用argparse模塊的例子,假設我們編寫了一個program.py命令行程序,需要接收兩個參數,分別是輸入文件和輸出文件,可以通過以下方式實現:
import argparse parser = argparse.ArgumentParser(description='Description of your program') parser.add_argument('-i','--input', help='Input file', required=True) parser.add_argument('-o','--output', help='Output file', required=True) args = vars(parser.parse_args()) input_file = args['input'] output_file = args['output'] print('Input file: %s' % input_file) print('Output file: %s' % output_file)
運行以上代碼,在命令行中輸入以下命令:
python program.py -i input.txt -o output.txt
則輸出結果為:
Input file: input.txt Output file: output.txt
三、argparse模塊參數詳解
argparse的常用參數如下:
- add_argument():定義命令行參數。
- description:程序的描述信息,會顯示在幫助信息的最前面。
- help:參數的幫助信息。
- default:參數的默認值。
- required:參數是否是必需的。
- action:參數的動作類型(如store,store_true,store_false,append等)。
- nargs:一個參數應該被解析成的數量(如N、?、*、+)。
- type:參數應該被解析成的類型。
- choices:參數可選的值。
- metavar:參數在幫助信息中的顯示名稱。
四、使用argparse模塊處理子命令參數
argparse還支持處理子命令參數,即在主命令下再定義一些子命令。例如,我們想要編寫一個文件處理程序,支持兩種操作,分別是讀取文件和寫入文件,可以通過以下方式實現:
import argparse parser = argparse.ArgumentParser(description='File processing program') subparsers = parser.add_subparsers() read_parser = subparsers.add_parser('read', help='Read file') read_parser.add_argument('file', help='File path') write_parser = subparsers.add_parser('write', help='Write file') write_parser.add_argument('file', help='File path') write_parser.add_argument('-c', '--content', help='File content') args = parser.parse_args() if hasattr(args, 'file'): print('File path:', args.file) if hasattr(args, 'content'): print('File content:', args.content)
在命令行中輸入以下命令:
python program.py read input.txt python program.py write output.txt --content "Hello world"
則分別輸出:
File path: input.txt File path: output.txt File content: Hello world
五、使用click模塊處理命令行參數
click是Python中一個流行的命令行應用框架,通過使用click模塊,可以輕鬆地編寫複雜的命令行應用程序。
下面是一個使用click模塊的例子,假設我們編寫了一個program.py命令行程序,需要接受兩個參數,分別是輸入文件和輸出文件,可以通過以下方式實現:
import click @click.command() @click.option('-i', '--input', help='Input file', required=True, type=click.Path(exists=True)) @click.option('-o', '--output', help='Output file', required=True, type=click.Path()) def main(input, output): click.echo('Input file: %s' % input) click.echo('Output file: %s' % output) if __name__ == '__main__': main()
運行以上代碼,在命令行中輸入以下命令:
python program.py -i input.txt -o output.txt
則輸出結果為:
Input file: input.txt Output file: output.txt
六、click模塊參數詳解
click模塊支持的參數與argparse類似,常用參數如下:
- @click.command():定義命令行程序。
- @click.option():定義命令行參數。
- help:參數的幫助信息。
- default:參數的默認值。
- required:參數是否是必需的。
- type:參數應該被解析成的類型。
- nargs:一個參數應該被解析成的數量(如N、?、*、+)。
- multiple:參數是否可以多次出現。
- count:參數出現的次數。
- callback:參數處理函數。
- is_flag:參數是否是布爾類型。
- expose_value:參數是否可以在函數內部訪問。
- envvar:參數在環境變量中的名稱。
- show_default:在幫助信息中是否顯示參數的默認值。
- prompt:當參數未提供時,是否提示用戶輸入。
七、小結
本文介紹了Python中處理命令行參數的兩個模塊argparse和click,並詳細闡述了它們的用法和常用參數。選擇合適的模塊對於開發命令行程序十分重要,合理地使用命令行參數可以提高程序的靈活性和可擴展性。
原創文章,作者:XDUV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/143578.html