无法在命令提示符下运行程序,但可以在IPython中运行

时间:2014-07-16 05:41:32

标签: python batch-file ipython dos

我写了一个程序:

import pylab as pl 
import numpy as np
from random import random


pl.figure()

r = np.array([ random() - 0.5 for xx in range(1000) ])

for i in range(20):
    print i
    pl.clf()
    pl.hist(r, 50)
    pl.savefig( 'abc%04d.png'%i )
    r += np.array([ random() - 0.5 for xx in range(1000) ])
    pl.show()

我在iPython中运行的效果很好。但是,如果我做了

C:\> python test.py

在命令提示符下,我每次都要关闭数字以获得输出。谁知道如何解决这个问题?最终我想编写一个批处理文件,有人可以双击以运行该文件。

2 个答案:

答案 0 :(得分:2)

IPython内核具有用于处理交互式图形的特定钩子,标准Python解释器不具备这种钩子。这在this page

上有更详细的解释(有几个解决方法)

答案 1 :(得分:2)

正如@monkut所说,你应该删除p1.show()

代码中的show()命令会停止,直到图形关闭。这将在这里讨论:

http://matplotlib.org/faq/howto_faq.html#use-show

这取决于脚本是以非交互模式(默认)还是以交互模式运行。在交互模式下,它会立即显示所有数字。也不是很有用!

所以你需要添加一些刷新绘图的事件(键盘或计时器)。上面的页面显示了许多变体。