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_script.py data.txt
—a bit like grep, for example.
What I know:
sys.argvandoptparselet me read any args and options easily.sys.stdinlet me read data piped infileinputmake the full process automatic
Unfortunately:
- using
fileinputuses stdin and any args as input. So I can't use options that are not filenames as it tries to open them. sys.stdin.readlines()works fine, but if I don't pipe any data, it hangs until I enter Ctrl + D- I don't know how to implement "if nothing in stdin, read from a file in args" because
stdinis alwaysTruein a boolean context.
I'd like a portable way to do this if possible.