我不理解pylab的某些行为。我编写了一个程序来计算一些数字并将它们写入标准输出。之后,show()在同一个程序中调用,它给了我一个图形输出。 我写的时候
program.py > tmp_file
它打开图形并将数字写入tmp_file。到现在为止还挺好。现在,我想做同样的事情,但是自动化了。但是,如果我写
program.py > tmp_file &
konsole已准备好接受下一个命令,但tmp_file在显示图形之前保持为空(尽管show()命令遵循program.py中的print命令,而不是相反的方式)。由于显示图形需要一段时间,因此使用tmp_file进行进一步处理是不可能的。例如,
program.py > tmp_file &
cat tmp_file
给出一个空输出,而
program.py > tmp_file
cat tmp_file
给出预期的结果值。
我做错了什么?这个问题有解决方案吗?
我正在使用suse标准python安装2.7.3。
另一个我无法找到答案的问题:是否可以将show()输出写入stdout?喜欢program.py> graph.xxx?
感谢您的帮助!
答案 0 :(得分:0)
对于您的第二个问题,program.py > tmp_file
使用
import sys
import pylab
pylab.plot([2,4,6,1,3,5])
pylab.savefig(sys.stdout, format='png')
您仍然必须明确指定格式:matplotlib无法读取文件名并从中推断出格式。
但最好将输出文件名作为参数;然后matplotlib可以使用实际的文件名并自动确定格式:
import sys
import pylab
pylab.plot([2,4,6,1,3,5])
pylab.savefig(sys.argv[1])
以program.py tmp_file.png
运行。