All'interno dello script Python si dovrebbe essere la lettura da 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()
All'interno l'interprete iterativo è possibile utilizzare il modulo subprocess sys.stdin finta.
In[0]: from test.py import *
In[1]: INPUT = subprocess.Popen(['grep', 'ABC', 'input.txt'], \
stdout=subprocess.PIPE).stdout
In[2]: main()
È inoltre possibile reindirizzare l'output a un file e leggere semplicemente dal file. Per scopi pratici, stdin è solo un altro file.
In[0]: ! grep "ABC" input.txt > output.txt
In[1]: INPUT = open('output.txt')
In[2]: main()
fonte
2012-05-19 02:37:45
Non ha familiarità con IPython. Qualche ragione per cui non puoi usare sys.stdin o il modulo fileinput? – Triptych
@Triptych Voglio eseguire il debug con quel particolare input, generato da grep. – CodeNoob
Prova a usare il [modulo file input] (http://docs.python.org/library/fileinput.html) e guarda come va. Ma per rispondere veramente a questa domanda: sì, puoi farlo ma dipende da come è scritto il pitone. – Keith