使用文件输入在IPython中运行脚本

时间:2013-08-08 11:46:39

标签: python input ipython

我有一个python脚本,为了这个问题的目的,可以简化为:

import sys
data = sys.stdin.read()
# do something with data ...

我们的想法是从shell运行这个脚本

python my_script.py < datafile

现在我想使用run命令从IPython调用脚本并尝试以下操作:

In [1]: run my_script.py < datafile

但显然这不是从datafile读取的,仍然等待IPython终端上的用户输入。

如何让run命令从文件而不是从终端读取标准输入?我检查了run命令的文档,但是它不包含任何指针。

我专门寻找能够在调用脚本后从IPython终端访问脚本(此处示例中为data)中定义的变量的答案。

3 个答案:

答案 0 :(得分:0)

一种解决方案是以这种方式执行脚本:

In [1]: !python my_script.py < datafile

显然,这适用于run命令,但它允许您从IPython中执行脚本。

答案 1 :(得分:0)

是否可以用稍微不同的方式写出来。例如,以下代码可能会执行您想要的操作:

import sys
data = open(sys.argv[1]).read()

然后从IPython终端使用%run而不使用<符号。

In [1]: %run my_script.py my_data.txt

答案 2 :(得分:0)

你能试试吗?

data = !cat datafile