Bên trong kịch bản Python bạn nên đọc từ 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()
Bên trong phiên dịch lặp đi lặp lại, bạn có thể sử dụng các mô-đun subprocess sys.stdin giả.
In[0]: from test.py import *
In[1]: INPUT = subprocess.Popen(['grep', 'ABC', 'input.txt'], \
stdout=subprocess.PIPE).stdout
In[2]: main()
Bạn cũng có thể thêm đầu ra vào tệp và chỉ đọc từ tệp. Đối với mục đích thực tế stdin chỉ là một tập tin khác.
In[0]: ! grep "ABC" input.txt > output.txt
In[1]: INPUT = open('output.txt')
In[2]: main()
Nguồn
2012-05-19 02:37:45
Không quen thuộc với IPython. Bất kỳ lý do bạn không thể sử dụng sys.stdin hoặc module fileinput? – Triptych
@Triptych Tôi muốn gỡ lỗi với đầu vào cụ thể đó, được tạo bởi grep. – CodeNoob
Hãy thử sử dụng [mô đun tệp tin đầu ra] (http://docs.python.org/library/fileinput.html) và xem cách thức hoạt động. Nhưng để thực sự trả lời câu hỏi này: có, bạn có thể làm điều đó nhưng nó phụ thuộc vào cách python được viết. – Keith