How to read from stdin or from a file if no data is piped in Python?
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.
Process your non-filename arguments however you'd like, so you wind up with an array of non-option arguments, then pass that array as the parameter to fileinput.input()
:
import fileinput
for line in fileinput.input(remaining_args):
process(line)