3

我有一个 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命令的文档,但这不包含任何指针。

我正在寻找答案,我可以data在调用脚本后从 IPython 终端访问脚本中定义的变量(在此处的示例中)。

4

3 回答 3

1

你能试一下吗?

data = !cat datafile
于 2013-08-09T10:34:54.610 回答
0

有没有可能以不同的方式写这个。例如,以下代码可能会执行您想要的操作:

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

然后从 IPython 终端,您使用%run不带<符号的。

In [1]: %run my_script.py my_data.txt
于 2013-08-08T20:08:32.833 回答
0

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

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

显然,这可以绕过run命令,但它允许您从 IPython 中执行脚本。

于 2013-08-08T12:01:41.030 回答