主要使用selenium+chrome,加了Tkinter的简单GUI,代码比较简单,就不细说了,请自行品味:
获取qq好友列表
这个是从QQ充值获取的,可得"原始数据",“分组”,“显示名”,“QQ号”:
import selenium
from selenium import webdriver
from seleniumwebdriverchromeoptions import Options
import tkinter as tk
from tkinterfiledialog import asksaveasfilename
from bs4 import BeautifulSoup
import lxml
import openpyxl
from openpyxl import Workbook
def callback():
driverswitch_to_frame('webpay-iframe')
iframe =driverfind_element_by_xpath('//[@id="midas-webpay-main-1450000186"]/div[2]/div[1]/iframe')
driverswitch_to_frame(iframe)
html=driverpage_source
soup=BeautifulSoup(html,"lxml")
a=soupfind_all(attrs={'class':'icon-friend-s'})
wb = Workbook()
ws = wbactive
wsappend(["原始数据","分组","显示名","QQ号"])
for i in a:
if inext_sibling !=' {undefined{elname}}({undefined{elqq}})':
#re,qq匹配:
#pattern = recompile(r'[1-9][0-9]{4,}')
#re,括号匹配:
#pattern = recompile(r'(<=)∗(=)∗(=)')
#m = patternsearch(inext_sibling)
k=0
for x in inext_sibling:
if x == '(':
f=k
if x == ')':
l=k
k=k+1
wsappend([inext_sibling,inext_siblingparentparentparentparentfind(attrs={'class':'icon-more-friend'})next_sibling,inext_sibling[:f],inext_sibling[f+1:l]])
print([inext_sibling,inext_siblingparentparentparentparentfind(attrs={'class':'icon-more-friend'})next_sibling,inext_sibling[:f],inext_sibling[f+1:l]])
wbsave(asksaveasfilename(defaultextension ='xlsx',filetypes = [('Excel 工作簿', 'xlsx')]))
可以使用tkinterfiledialog模块中的askopenfilename函数来实现,tkinter是python自带的GUI,通过askopenfilename函数打开选择文件对话框,代码如下:
import tkinterfiledialogfn=tkinterfiledialogaskopenfilename(title='选择一个文件', filetypes=[('所有文件',''),('文本文件','txt')])
print(fn)
效果如下:
函数说明:
askopenfilename(options)
Ask for a filename to open
title参数设置标题, filetypes参数设置文件类型
def selectPath_hex1():
path_tmp= askopenfilename(filetypes=[("hex格式","Hex")])
path_hex1set(path_tmp)
1背景
在性能测试过程中,往往需要监控服务器的性能情况,并记录这些性能指标结果。不论是云下数据库服务器还是应用服务器,都可以通过nmon来进行监控,设定打点间隔和打点次数,将性能指标情况保存成nmon文件,并通过工具,如Excel插件Nmon_Analyzer、Java GUI工具nmon visualizer等读取nmon文件内容,分析采集结果。但当监控的服务器数量较多时,依次采集多个nmon文件中的性能指标结果会耗费时间,同时,人工读取和记录数据也可能会出现记录错误的偶然误差。因此我们可以尝试使用自己熟悉的编程语言,如Python等,来开发一款简单易实现的小工具,用于自动采集性能测试nmon文件中的性能测试指标。
2 工具介绍与设计
工具实现的基本思想是逐个扫描指定路径下的nmon文件,根据nmon文件的内部格式,提取出目标性能指标数据,再对提取出来的数据进行加工处理,得到结果,并将结果自动保存到新生成的结果Excel文件中。为了更直观地获取用户输入的nmon文件路径及结果保存路径,我们可以编写GUI界面,利用界面上的文本输入框来获取用户的输入,并采用界面上的按钮来触发这一采集事件。
图1 工具设计流程图
3 工具实现
(1)导入所需模块
由于我们的工具中包含对文件和路径进行 *** 作,这需要依赖os模块实现。在逐行读取nmon文件内容时,用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode。re模块是python独有的匹配字符串的模块,利用正则表达式对字符串进行模糊匹配,提取自己需要的字符串部分,使用该模块可以实现逐行扫描进行模糊匹配查找到CPU和内存的相关性能指标。xlwt库的作用是将数据写入Excel表格中。Tkinter 是 Python 的标准 GUI 库,导入 Tkinter 模块后可以使用控件快速的创建 GUI 应用程序。 tkinterStringVar 能自动刷新的字符串变量,可用set和get方法进行传值和取值,以此来接收用户输入。
图2 代码-导入所需模块
(2)窗口的实现
利用Tkinter模块创建窗口并插入输入框控件用来获取用户输入的路径信息,输入框的内容存储到StringVar当中,设置按钮Button用于和鼠标点击事件绑定。
图3 代码-窗口的实现
图3 窗口的实现图
(3)编写事件代码——求CPU平均利用率的函数
不同版本的nmon文件内部格式略有不同,因此在编写程序时,要先了解目标版本的内部结构,用来确定字符串模式匹配时,需要利用nmon文件中性能指标相关内容的哪些特征。
为了计算均值,需要获取nmon文件中记录的打点次数。通过了解nmon文件中AAA参数是关于 *** 作系统以及nmon本身的一些信息,可以查找该行来进行提取。
图4 代码-获取打点次数和打点间隔
CPU_ALL参数是对所有CPU的概述,显示所有CPU平均占用情况,将记录的CPU占用率逐个取出存放在数组里,并求数组元素的平均值,即为整个监控期间CPU的平均利用率,函数将该值返回。
图5 代码-求CPU平均利用率
(4)编写事件代码——求内存均占用率的函数
类似地,通过MEM参数获取内存占用情况,与CPU情况不同的是,该参数行包括多项内存相关指标,而在监控性能指标时,我们常用公式1来计算内存的占用率,因此需要从MEM参数中提取相关指标,包括memtotal、memfree、cached、buffers,按照公式进行计算,并返回内存占用率。
公式1 内存占用率常用计算公式
图6 代码-求内存占用率
(5)编写事件代码——鼠标点击事件
该事件用于和界面上的按钮Button进行绑定,实现当点击按钮后的一系列 *** 作:从输入框取nmon文件路径和目标保存路径,生成Excel文件并创建工作表,写入默认的表头内容,调用求CPU平均利用率的函数和求内存均占用率的函数,将返回的值写入Excel文件并保存。
图7 代码-鼠标点击事件
4 总结
该工具是基于Python语言的简单实践,可以实现批量自动提取nmon文件中的性能指标结果,并且可以沿用本思路根据需要对工具的功能进行修改或扩展。使用本工具进行性能结果的自动采集相比人工读取数值更加节省时间,并且避免了记录时出现错误的偶然误差,有助于提升准确度和测试效率。
以上就是关于python 在qq消息中下载文件全部的内容,包括:python 在qq消息中下载文件、实现Python打开对话框的问题、Python3.6 tkinter 复数个文件对话框选择文件不能正常显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)