⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 np_printplot.py

📁 该软件根据网络数据生成NetFlow记录。NetFlow可用于网络规划、负载均衡、安全监控等
💻 PY
📖 第 1 页 / 共 2 页
字号:
                def canstr(s):            #            # escape newlines in labels before saving to file            #            return string.replace(s, '\n', '\\n')            	def strip_spaces(nm):	    tmp = ''	    for c in nm:		if c == ' ':		    tmp +=  '-'		else:		    tmp += c	    return tmp	base = self.datafile_entry.get()        dir = os.path.dirname(base)	#pre = string.split(base, '*')[0]        print 'base =', base        #print 'pre =', pre        print 'dir', dir        try:            post = string.split(base, '*')[1] + '.'        except IndexError:            post = ''        print 'post =', post	for s in self.plot.sets:            # how many data fields to save            nf = 0            for f in s.data[0]:                if type(f) in \                       [types.IntType, types.LongType, types.FloatType]:                    nf += 1                else:                    break            print 's.path =', s.path            fnm = os.path.join(dir, post + os.path.basename(s.path))	    self.data_nm = strip_spaces(fnm)            if self.data_nm[-1] == '/':               self.data_nm = self.data_nm[:-1]	    doit = self.check_file(self, 'data_nm', self.datafile_entry)	    if doit:                try:                    f = open(self.data_nm, 'w')                except IOError, s:                    print 'Can\'t save:'                    print s                    return                f.write('#plot-title=%s\n' % (canstr(self.plot.title)))                f.write('#plot-xlab=%s\n' % (canstr(self.plot.xlab)))                f.write('#plot-ylab=%s\n' % (canstr(self.plot.ylab)))                                for d in self.plot.decs:                    f.write('#plot-dec=%d:%s:%s:%s\n' \                            % (d.type, repr(d.coords), d.col, d.label))		for d in s.data:		    #f.write('%f\t%f\n' % (d[0], d[1]))		    f.write('%f' % (d[0]))                    for v in d[1:nf]:                        f.write('\t%f' % (v))                    f.write('\n')                print 'writing data file %s' % (self.data_nm)		f.close()	     ##############################################################################    def cancel(self, event=None):	self.master.focus_set()	self.destroy()	     ##############################################################################    def ok(self, event=None):	dosave = 0	dohard = 0	dodata = 0	self.fnm = None	p = self.params	p.title = self.title_entry.get()	p.xlabel = self.xlabel_entry.get()	p.ylabel = self.ylabel_entry.get()	i = 0	for e in self.set_ents:	   p.sets[i].path = e.get()	   i = i + 1	p.lpr = self.lpr_entry.get()	p.file = self.file_entry.get()	#print 'dosave = %d' % ( self.dosave.get())	if self.dosave.get():	    #dosave = self.check_file()	    dosave = self.check_file(self.params, 'file', self.file_entry)	    if dosave:		self.fnm = self.params.file		print 'fn=%s' % (self.params.file)	#print dosave	#print 'dosave = %d' % (dosave)	#print 'dohard = %d' % ( self.dohard.get())	tmpfile = 0	if self.dohard.get():	    dohard = 1	    if not self.fnm:		self.fnm = tempfile.mktemp()		tmpfile = 1	if dosave or dohard:	    self.set_plot_params()	    self.tmp_plot()	    	if dohard:	    self.hardcopy()	    if tmpfile:		os.remove(self.fnm)	dodata = self.dodata.get()	if dodata:	    self.save_data()	if dosave or dohard or dodata:	    self.withdraw()	    self.update_idletasks()	    self.cancel()	     ##############################################################################    def set_plot_params(self):	p = self.params	pl = self.plot	pl.title = p.title	pl.xlab = p.xlabel	pl.ylab= p.ylabel## 	i = 0## 	#print 'p.sets = ',## 	#print self.params.sets## 	for set in pl.sets:## 	    #print 'set ',## 	    #print 'plot %s params %s' % (set[0], p.sets[i])## 	    set.path = p.sets[i]## 	    #print ' -> ',## 	    #print set[0]## 	    i = i+1	     ##############################################################################    def tmp_plot(self):        # don't give tedious message about tempnam security risk        filterwarnings('ignore', 'tempnam is a potential security risk to your program')                psfilenm = self.fnm        tmpfile = os.tempnam('/tmp')	cm = [0.0, 0.0, 0.0, 'green']	c = self.canv        # replot more suitably        # - especially transpose black/white foreground/background	scaledata = (c.xmax, c.xmin, c.ymax, c.ymin, 		     c.xscalef, c.yscalef, c.xrange, c.yrange, 		     c.xfloats, c.yfloats)	p = np_plot.Plot_canv(self.plot, c.sets, mode=c.mode, 		      style=c.style, fgcol='black', bgcol='white', 		      scaledata=scaledata, plotlinewidth=1, axislinewidth=2)        	print 'Generating postscript file %s' % (psfilenm)        # turn it into postscript 	p.canv.postscript(file=tmpfile, colormode='color', colormap=cm, 			  width= self.plot.wi, 			  height = self.plot.ht-np_plot.B_TB_HT, rotate=1, 			  pageheight='175m')        # fine up nasty coarse Tk postscript engine lines        print 'converting linewidths'        cmd = 'sed -e \'s/1 setlinewidth/0.4 setlinewidth/g\' -e \'s/2 setlinewidth/1 setlinewidth/g\' %s > %s' % (tmpfile, psfilenm)	status, output = commands.getstatusoutput(cmd)	print '... exit status %d %s' % (status, output)        # tidy up        os.unlink(tmpfile)	del(p.canv)	del(p)	        print ' ... done'	     ##############################################################################    def hardcopy(self):	cmd = '%s %s' % (self.params.lpr, self.fnm)	print 'hardcopy: %s - ' % (cmd),	status, output = commands.getstatusoutput(cmd)	print 'exit status %d %s' % (status, output)		     ##############################################################################    def check_file(self, obj, field, entry_obj):	fnm = getattr(obj, field)	try:	    f = open(fnm, 'r')	except:	    # doesn't already exist - carry on	    return 1	else:	    # check	    results = []	    d = OverPrint(self.master, title='Overprint', 			 msg='file already exists - overwrite?', 			 entries = [('FILE:', fnm)],results=results)	    if not len(results):		#print 'no res'		return 0	    else:		fnm = results[0]		print 'res = %s' % (fnm)		setattr(obj, field, fnm)		entry_obj.delete(0, END)		entry_obj.insert(INSERT, fnm)		return 1	     ##############################################################################    def make_params(self):	p = self.params = PrintParams()	p.sets = []	pl = self.plot	if len(pl.title):	    p.title = pl.title	elif len(pl.sets) == 1:	    p.title = pl.sets[0].path	else:	    p.title = ''	p.xlabel = pl.xlab	p.ylabel = pl.ylab	for set in pl.sets:	    p.sets.append(set)	p.lpr = LPR_MONO_DEF	p.file = self.make_fnm()	     ##############################################################################    def make_fnm(self):	def suffstr_add(suffstr, str):	    if not len(suffstr):		#print 'suffstr=%s' % (str)		return str	    elif not len(str):		return suffstr	    elif suffstr[-1] == '.':		#print 'suffstr=%s' % (suffstr + str)		return suffstr + str	    else:		#print 'suffstr=%s' % (suffstr + '.' + str)		return suffstr + '.' + str	basepath, suffstr = os.path.split(self.plot.path)	#print basepath	#print suffstr	tstr = os.path.split(self.params.title)[1]	if tstr == suffstr:	    tstr = ''	if len(suffstr):	    suffstr += '.'	if len(basepath):	     suffstr = '/' + suffstr	if len(tstr):	    suffstr = suffstr_add(suffstr, tstr)	# Set 0 is the boss - but may not be included in zoom	i = 0	for s in self.canv.sets:	    indx1, indx2 = s.curr_indices[-1]	    if indx1 != None:		break	    i += 1	if indx1 != 0 or indx2 != self.canv.sets[0].len - 1:	    if i != 0:		setstr = 'set%d.' % (i)	    else:		setstr = ''	    suffstr = suffstr_add(suffstr, '%sindx%d-%d' % (setstr, 							    indx1, indx2))	if self.plot.canv_curr != 0:	    suffstr = suffstr_add(suffstr, 'yval%.3f-%.3f' % (self.canv.ymin, self.canv.ymax))	if self.canv.mode == np_plot.MODE_TS:	    suffstr = suffstr_add(suffstr, 'ts')	elif self.canv.mode == np_plot.MODE_PDF:	    suffstr = suffstr_add(suffstr, 'pdf')	else:	    suffstr = suffstr_add(suffstr, 'cdf')	suffstr = suffstr_add(suffstr, 'ps')	## 	path = self.plot.path[0][0] + connstr + indxstr + yvalstr + mstr + suffstr	#path = os.path.join(basepath, suffstr)	path = basepath + suffstr	# remove any spaces	ss = string.split(path)	path = ''	for e in ss:	    path = path + e	return self.strip_dot(path)		     ##############################################################################    def strip_dot(self, path):	p1, p2 = os.path.split(path)	if p2[0] == '.':	    p2 = p2[1:]	return os.path.join(p1, p2)		     ############################################################################################################################################################ testroot = Nonedef callback():    global testroot    p = PrintParams()    p.title = 'Title'    p.xlabel = 'Xlabel'    p.ylabel = 'Ylabel'    p.sets = ['Plot1', 'Plot2']    p.lpr = 'lpr -Ppalm'    p.file = '/tmp/foo'    d = PrintControl(testroot, params=p)def quit():    sys.exit(0)def handle_sigint(n, f):    print 'SIGINT'    #handle_sigint_def(n, f)    sys.exit(0)def main():    global testroot    testroot = Tk()    handle_sigint_def = signal(SIGINT, handle_sigint)    # create a toolbar    toolbar = Frame(testroot)    b = Button(toolbar, text="PrintControl", width=6, command=callback)    b.pack(side=LEFT, padx=2, pady=2)        b = Button(toolbar, text="quit", width=6, command=quit)    b.pack(side=LEFT, padx=2, pady=2)        toolbar.pack(side=TOP, fill=X)        mainloop()	    	     ############################################################################### Call main when run as scriptif __name__ == '__main__':        main()	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -