Since Python 2.7, the Python standard library has included the argparse module for command line argument processing. There is an argparse tutorial in the Python docs.
In [7]:
%%script /usr/bin/env python - foo
import sys
if len(sys.argv) != 2:
sys.exit("Usage: myscript.py <parameter>")
In [10]:
%%script /usr/bin/env python - -h
import argparse
import sys
def word_count(input_file):
count = 0
for line in input_file:
count += 1
return count
parser = argparse.ArgumentParser(description='Count lines in file')
parser.add_argument('input_filename', help='Input filename')
args = parser.parse_args()
try:
input_file = open(args.input_filename)
except IOError as e:
print >>sys.stderr, "Failed to open {}: {}".format(
args.input_filename, sys.stderr)
sys.exit(1)
else:
with input_file:
print args.input_filename, word_count(input_file)
Argparse with optional arguments
In [17]:
%%script /usr/bin/env python - /etc/passwd
import argparse
import sys
def word_count(input_file):
count = 0
for line in input_file:
count += 1
return count
parser = argparse.ArgumentParser(description='Count lines in file')
parser.add_argument('input_file', type=argparse.FileType(),
help='Input filename')
parser.add_argument('output_file', type=argparse.FileType('w'),
nargs='?', default=sys.stdout,
help='Output filename')
args = parser.parse_args()
with args.input_file:
print >>args.output_file, args.input_file.name, word_count(args.input_file)
In [24]:
%%script /usr/bin/env python - --language german Chris
import argparse
parser = argparse.ArgumentParser(description='Greet someone')
parser.add_argument('--language','-L', choices=('english','german'),
default='english',
help='Language to greet in')
parser.add_argument('name', nargs='?', default='',
help='Person to greet')
args = parser.parse_args()
if args.language == 'english':
greeting = "Good day"
elif args.language == 'german':
greeting = "Guten tag"
print ' '.join([greeting, args.name])
In [ ]: