我明白我可以通过运行在IPython中的脚本run test.py
和调试从那里。
但我怎么管的输出成test.py? 举例来说,本来我可以像在命令行中运行grep "ABC" input.txt | ./test.py
grep "ABC" input.txt | ./test.py
,但我要如何做同样的事情在IPython的?
谢谢!
我明白我可以通过运行在IPython中的脚本run test.py
和调试从那里。
但我怎么管的输出成test.py? 举例来说,本来我可以像在命令行中运行grep "ABC" input.txt | ./test.py
grep "ABC" input.txt | ./test.py
,但我要如何做同样的事情在IPython的?
谢谢!
里面的Python脚本,你应该从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()
里面的反复解释,你可以使用子模块模拟sys.stdin。
In[0]: from test.py import *
In[1]: INPUT = subprocess.Popen(['grep', 'ABC', 'input.txt'], \
stdout=subprocess.PIPE).stdout
In[2]: main()
也可通过管道输出到一个文件,只是从文件中读取。 为了实用的目的标准输入只是另一个文件。
In[0]: ! grep "ABC" input.txt > output.txt
In[1]: INPUT = open('output.txt')
In[2]: main()