У меня CLI script и хочу, чтобы он считывал данные из файла. Он должен иметь возможность читать его двумя способами:
-
cat data.txt | ./my_script.py -
./my_script.py data.txt
- бит, например, grep.
Что я знаю:
-
sys.argvиoptparseпозволяют мне легко читать любые аргументы и варианты. -
sys.stdinПозвольте мне прочитать данные, отправленные в -
fileinputсделать полный процесс автоматической
К сожалению:
- Использование
fileinputиспользует stdin и любые аргументы в качестве входных данных. Поэтому я не могу использовать параметры, которые не являются именами файлов, когда он пытается их открыть. -
sys.stdin.readlines()работает нормально, но если я не обрабатываю какие-либо данные, он зависает, пока я не введу Ctrl + D - Я не знаю, как реализовать "если ничего в stdin, прочитайте из файла в args", потому что
stdinвсегдаTrueв булевом контексте.
Я бы хотел, чтобы это было возможно, если это возможно.