I am currently using argparse like this:
import argparse
from argparse import ArgumentParser
parser = ArgumentParser(description=\"ikjMatrix multiplication\")
p
A way to do this in Python 3.4 is to use the argparse.FileType class. Make sure to close the input stream when you are finished. This is also useful because you can use the pseudo-argument '-'
for STDIN/STDOUT. From the documentation:
FileType objects understand the pseudo-argument
'-'
and automatically convert this intosys.stdin
for readable FileType objects andsys.stdout
for writable FileType objects
Example:
#!/usr/bin/env python3
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--infile', type=argparse.FileType('r', encoding='UTF-8'),
required=True)
args = parser.parse_args()
print(args)
args.infile.close()
And then when ran...
Without argument:
$ ./stack_overflow.py
usage: stack_overflow.py [-h] --infile INFILE
stack_overflow.py: error: the following arguments are required: --infile
With nonexistent file:
$ ./stack_overflow.py --infile notme
usage: stack_overflow.py [-h] --infile INFILE
stack_overflow.py: error: argument --infile: can't open 'notme': [Errno 2] No such file or directory: 'notme'
With an existing file:
$ ./stack_overflow.py --infile ./stack_overflow.py
Namespace(infile=<_io.TextIOWrapper name='./stack_overflow.py' mode='r' encoding='UTF-8'>)
Using '-'
for STDIN:
$ echo 'hello' | ./stack_overflow.py --infile -
Namespace(infile=<_io.TextIOWrapper name='' mode='r' encoding='UTF-8'>)