我有一个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
)中定义的变量的答案。
答案 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