У меня 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
в булевом контексте.
Я бы хотел, чтобы это было возможно, если это возможно.