8

run test.pyIPython でスクリプトを実行し、そこからデバッグできることを理解しています。

しかし、出力を test.py にパイプするにはどうすればよいでしょうか? たとえば、通常は のようにコマンド ラインで実行できますがgrep "ABC" input.txt | ./test.py、IPython で同じことを行うにはどうすればよいでしょうか。

ありがとう!

4

1 に答える 1

7

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()

出力をファイルにパイプして、ファイルから読み取ることもできます。実用上、stdin は単なる別のファイルです。

In[0]: ! grep "ABC" input.txt > output.txt
In[1]: INPUT = open('output.txt')
In[2]: main()
于 2012-05-19T02:37:45.870 に答える