IPython的:我怎么管东西放到一个Python脚本(IPython: how do I pipe

2019-07-29 10:48发布

我明白我可以通过运行在IPython中的脚本run test.py和调试从那里。

但我怎么管的输出成test.py? 举例来说,本来我可以像在命令行中运行grep "ABC" input.txt | ./test.py grep "ABC" input.txt | ./test.py ,但我要如何做同样的事情在IPython的?

谢谢!

Answer 1:

里面的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()


文章来源: IPython: how do I pipe something into a Python script