Wewnątrz skryptu Pythona należy czytać od sys.stdin:
import sys
INPUT = sys.stdin
def do_something_with_data(line):
# Do your magic here
...
return result
def main():
for line in INPUT:
print 'Result:', do_something_with_data(line)
if __name__ == '__main__':
main()
Wewnątrz iteracyjny tłumacza można użyć modułu subprocess mock sys.stdin.
In[0]: from test.py import *
In[1]: INPUT = subprocess.Popen(['grep', 'ABC', 'input.txt'], \
stdout=subprocess.PIPE).stdout
In[2]: main()
Można również potokować wyjście do pliku i po prostu odczytać z pliku. Dla celów praktycznych stdin jest po prostu kolejnym plikiem.
In[0]: ! grep "ABC" input.txt > output.txt
In[1]: INPUT = open('output.txt')
In[2]: main()
Nie zna IPython. Każdy powód, dla którego nie możesz użyć sys.stdin lub modułu fileinput? – Triptych
@ Triptych Chcę debugować za pomocą tego konkretnego wejścia generowanego przez grep. – CodeNoob
Spróbuj użyć [fileinput module] (http://docs.python.org/library/fileinput.html) i zobacz, jak to działa. Ale aby naprawdę odpowiedzieć na to pytanie: tak, możesz to zrobić, ale to zależy od tego, jak napisany jest pyton. – Keith