I have a CLI script and want it to read data from a file. It should be able to read it in two ways :
cat data.txt | ./my_script.py
./my
Argparse allows this to be done in a fairly easy manner, and you really should be using it instead of optparse
unless you have compatibility issues.
The code would go something like this:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--input', type = argparse.FileType('r'), default = '-')
Now you have a parser that will parse your command line arguments, use a file if it sees one, or use standard input if it doesn't.