argparse— Parser for command-line options, arguments and sub-commands- Build Command-Line Interfaces With Python’s argparse – Real Python
Example
The following code is a Python program that takes a list of integers and produces either the sum or the max:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
Assuming the Python code above is saved into a file called prog.py, it can be run at the command line and provides useful help messages:
$ python3 prog.py -h usage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max)
When run with the appropriate arguments, it prints either the sum or the max of the command-line integers:
$ python3 prog.py 1 5 3 2 4 5 $ python3 prog.py 1 5 3 2 4 --sum 15
If invalid arguments are passed in, it will issue an error:
$ python3 prog.py a b c usage: prog.py [-h] [--sum] N [N ...] prog.py: error: argument N: invalid int value: 'a'
$ python3 prog.py usage: prog.py [-h] [--sum] N [N ...] prog.py: error: the following arguments are required: N
Example2
#!/usr/bin/python3
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('folder', help='Path to the folder to scan')
parser.add_argument('output', help='Path of the output file without the extension')
parser.add_argument('-f', '--format', help='Format of the output', default='pdf', \
choices=['bmp', 'gif', 'jpg', 'png', 'pdf', 'svg'])
parser.add_argument('-v', '--view', action='store_true', help='View the graph')
parser.add_argument('-c', '--cluster', action='store_true', help='Create a cluster for each subfolder')
parser.add_argument('--cluster-labels', dest='cluster_labels', action='store_true', help='Label subfolder clusters')
parser.add_argument('-s', '--strict', action='store_true', help='Rendering should merge multi-edges', default=False)
args = parser.parse_args()
print(args.folder)
print(args.cluster)
print(args.cluster_labels)
print(args.strict)
print(args.format)
print(args.output)
$ ./prog.py ip_folder file_out -c -f png ip_folder True False False png file_out
ดู help
$ ./prog.py -h
usage: prog.py [-h] [-f {bmp,gif,jpg,png,pdf,svg}] [-v] [-c]
[--cluster-labels] [-s]
folder output
positional arguments:
folder Path to the folder to scan
output Path of the output file without the extension
optional arguments:
-h, --help show this help message and exit
-f {bmp,gif,jpg,png,pdf,svg}, --format {bmp,gif,jpg,png,pdf,svg}
Format of the output
-v, --view View the graph
-c, --cluster Create a cluster for each subfolder
--cluster-labels Label subfolder clusters
-s, --strict Rendering should merge multi-edges
ไม่ใส่ค่าให้ แล้ว error
$ ./prog.py
usage: prog.py [-h] [-f {bmp,gif,jpg,png,pdf,svg}] [-v] [-c]
[--cluster-labels] [-s]
folder output
prog.py: error: the following arguments are required: folder, output