Ven*_*tta 7 python pipe ipython
我知道我可以在IPython中运行脚本run test.py并从那里调试.
但是如何将输出传输到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()
Run Code Online (Sandbox Code Playgroud)
在迭代解释器中,您可以使用子进程模块mock sys.stdin.
In[0]: from test.py import *
In[1]: INPUT = subprocess.Popen(['grep', 'ABC', 'input.txt'], \
stdout=subprocess.PIPE).stdout
In[2]: main()
Run Code Online (Sandbox Code Playgroud)
您还可以将输出传递给文件,只需从文件中读取即可.出于实际目的,stdin只是另一个文件.
In[0]: ! grep "ABC" input.txt > output.txt
In[1]: INPUT = open('output.txt')
In[2]: main()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2784 次 |
| 最近记录: |