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