Skip to content

Commit 2e096bc

Browse files
authored
Merge branch 'master' into subprocess
2 parents 4a75a3d + f10cb57 commit 2e096bc

38 files changed

+597
-0
lines changed

python-argparse/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Build Command-Line Interfaces With Python's argparse
2+
3+
This folder provides the code examples for the article [Build Command-Line Interfaces With Python's argparse](https://realpython.com/command-line-interfaces-python-argparse/).

python-argparse/abbreviate.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import argparse
2+
3+
parser = argparse.ArgumentParser(allow_abbrev=False)
4+
5+
parser.add_argument("--argument-with-a-long-name")
6+
7+
args = parser.parse_args()
8+
9+
print(args.argument_with_a_long_name)

python-argparse/actions.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import argparse
2+
3+
parser = argparse.ArgumentParser()
4+
5+
parser.add_argument(
6+
"--name", action="store"
7+
) # Equivalent to arg_parser.add_argument("--name")
8+
parser.add_argument("--pi", action="store_const", const=3.14)
9+
parser.add_argument("--is-valid", action="store_true")
10+
parser.add_argument("--is-invalid", action="store_false")
11+
parser.add_argument("--item", action="append")
12+
parser.add_argument("--repeated", action="append_const", const=42)
13+
parser.add_argument("--add-one", action="count")
14+
parser.add_argument("--version", action="version", version="%(prog)s 0.1.0")
15+
16+
17+
args = parser.parse_args()
18+
19+
print(args)

python-argparse/args.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
first
2+
second
3+
third

python-argparse/calc.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import argparse
2+
3+
4+
def add(a, b):
5+
return a + b
6+
7+
8+
def sub(a, b):
9+
return a - b
10+
11+
12+
def mul(a, b):
13+
return a * b
14+
15+
16+
def div(a, b):
17+
return a / b
18+
19+
20+
global_parser = argparse.ArgumentParser(prog="calc")
21+
subparsers = global_parser.add_subparsers(
22+
title="subcommands", help="arithmetic operations"
23+
)
24+
25+
arg_template = {
26+
"dest": "operands",
27+
"type": float,
28+
"nargs": 2,
29+
"metavar": "OPERAND",
30+
"help": "a numeric value",
31+
}
32+
33+
add_parser = subparsers.add_parser("add", help="add two numbers a and b")
34+
add_parser.add_argument(**arg_template)
35+
add_parser.set_defaults(func=add)
36+
37+
sub_parser = subparsers.add_parser("sub", help="subtract two numbers a and b")
38+
sub_parser.add_argument(**arg_template)
39+
sub_parser.set_defaults(func=sub)
40+
41+
mul_parser = subparsers.add_parser("mul", help="multiply two numbers a and b")
42+
mul_parser.add_argument(**arg_template)
43+
mul_parser.set_defaults(func=mul)
44+
45+
div_parser = subparsers.add_parser("div", help="divide two numbers a and b")
46+
div_parser.add_argument(**arg_template)
47+
div_parser.set_defaults(func=div)
48+
49+
args = global_parser.parse_args()
50+
51+
print(args.func(*args.operands))

python-argparse/cooking.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import argparse
2+
3+
arg_parser = argparse.ArgumentParser()
4+
5+
arg_parser.add_argument("--veggies", nargs="+")
6+
arg_parser.add_argument("--fruits", nargs="*")
7+
8+
args = arg_parser.parse_args()
9+
10+
print(args)

python-argparse/coordinates.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import argparse
2+
3+
arg_parser = argparse.ArgumentParser()
4+
5+
arg_parser.add_argument(
6+
"--coordinates",
7+
nargs=2,
8+
metavar=("X", "Y"),
9+
help="take the Cartesian coordinates %(metavar)s",
10+
)
11+
12+
args = arg_parser.parse_args()
13+
14+
print(args)

python-argparse/custom_action.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import argparse
2+
3+
4+
class VerboseStore(argparse.Action):
5+
def __call__(self, parser, namespace, values, option_string=None):
6+
print(f"Storing {values} in the {option_string} option...")
7+
setattr(namespace, self.dest, values)
8+
9+
10+
arg_parser = argparse.ArgumentParser()
11+
12+
arg_parser.add_argument("-n", "--name", action=VerboseStore)
13+
14+
args = arg_parser.parse_args()
15+
16+
print(args)

python-argparse/days.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import argparse
2+
3+
my_parser = argparse.ArgumentParser()
4+
5+
my_parser.add_argument("--weekday", type=int, choices=range(1, 8))
6+
7+
args = my_parser.parse_args()
8+
9+
print(args)

python-argparse/divide.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import argparse
2+
3+
arg_parser = argparse.ArgumentParser()
4+
5+
arg_parser.add_argument("--dividend", type=float)
6+
arg_parser.add_argument("--divisor", type=float)
7+
8+
args = arg_parser.parse_args()
9+
10+
print(args.dividend / args.divisor)

0 commit comments

Comments
 (0)