IPython:如何将某个内容导入到Python脚本中?

8

我知道可以通过run test.py在IPython中运行脚本并从那里进行调试。

但是如何将输出导入到test.py中呢?例如,通常可以在命令行中运行grep "ABC" input.txt | ./test.py,但在IPython中该怎么做呢?

谢谢!


不熟悉IPython。您为什么不能使用sys.stdin或fileinput模块? - Kenan Banks
@Triptych 我想使用由grep生成的特定输入进行调试。 - CuriousMind
尝试使用fileinput模块,看看效果如何。但是要真正回答这个问题:是的,你可以这样做,但这取决于Python代码的编写方式。 - Keith
你的意思是想要模拟用户输入到IPython吗? - Keith
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()

在迭代解释器中,您可以使用subprocess模块模拟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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接