当从python3进行系统调用时,如何避免gnuplot在终端(set terminal dumb)中绘图时关闭程序?

时间:2017-05-26 15:01:38

标签: python-3.x gnuplot dumb-data

我正在制作一个用于分析FASTAQ文件质量的管道。通常,用户希望在决定过滤或不过滤序列之前先查看一些箱形图。由于所有内容都将在服务器上运行,因此我决定使用以下选项在控制台上打印所有内容:

set terminal dumb

图表显示正确,但之后程序关闭,python中的下一条指令未完成。 如何避免我的计划在绘图后立即结束?

这是来自python3的系统调用的虚拟示例,其中“请不要关闭!”从未打印过:

import subprocess as sp
proc=sp.Popen(['gnuplot'], shell = True, stdin=sp.PIPE)
proc.stdin.write('set terminal dumb;'.encode('utf-8'))
proc.stdin.write('set style data boxplot;'.encode('utf-8'))
proc.stdin.write('set title "FASTAQ" font "Arial,14";'.encode('utf-8'))
proc.stdin.write('set xtics ("1.0" 1, "1.2" 2, "1.4" 3);'.encode('utf-8'))
proc.stdin.write('plot for [i=1:3] "dummydata.txt" using (i):i notitle;'.encode('utf-8'))
proc.stdin.flush()
#proc.terminate()
print ("Please don't close!")

dummydata.txt包含的内容是:

# 1.0 1.2 1.4
2.2 2.2 3.06
2.0 2.46 2.93
2.2 2.46 3.06
2.0 2.4 2.8
1.73 2.33 2.8

更正:其中一条说明    proc.stdin.flush() 不对。我改变了它,现在的问题是它打印出“请不要关闭!”但它在绘图之前就做到了,我希望能够在文字“请不要关闭!”之前看到情节,有没有办法做到这一点?

0 个答案:

没有答案