Python常用模块

psutil模块:需先下载此模块

#py文件名字不要跟导入的模块重名  

#py文件是可以当做模块导入的  

import psutil #资源监控模块  

mem = psutil.virtual_memory() #监控内存  

print(men)

cpu = psutil.cpu_percent(1) #监控cpu  

print(cpu)  

disk = psutil.disk_usage(r'c:') #监控硬盘  

print(disk)  

yagmail模块:yagmail是发送邮件的,首先需要下载

import yagmail  

yag = yagmail.SMTP(user='邮箱地址',password='邮箱授权密码',host='smtp.qq.com'(邮件格式))  

yag.send(to='接收方邮箱地址',subject='主题',contents='内容')  

yag.close() 

psutil模块与yagmail应用实例

import psutil,yagmail
def sendmail(nr,nr1):
    yag = yagmail.SMTP(user='shuaiyin1120@163.com',password='sin19941120',host='smtp.163.com')
    yag.send(to='shuaiyin1120@163.com',subject=nr,contents=nr1)
    yag.close()
def jk_cpu():
    cpu = psutil.cpu_percent(1)
    return cpu

def jk_disk():
    disk = psutil.disk_usage('c:')
    disk_total = disk[0]//1024//1024//1024
    disk_used = disk[1]//1024//1024//1024
    disk_free = disk[2]//1024//1024//1024
    disk_dict = {
        '硬盘总量':disk_total,
        '硬盘使用量':disk_used,
        '硬盘空余量':disk_free,
    }
    return disk_dict

def jk_mem():
    mem = psutil.virtual_memory()
    mem_total = mem[0]//1024//1024//1024
    mem_percent = mem[2]
    mem_used = mem[3]//1024//1024//1024
    mem_free = mem[4]//1024//1024//1024
    mem_dict = {
        '内存总量':mem_total,
        '内存使用率':mem_percent,
        '内存使用量':mem_used,
        '内存空余量':mem_free,
    }
    return mem_dict

def main():
    cpu = jk_cpu()
    disk = jk_disk()
    mem = jk_mem()
    msg ='''
    cpu_percent:%s%%
    disk_total:%sG
    disk_used:%sG
    disk_free:%sG
    mem_total:%sG
    mem_percent:%s%%
    mem_used:%sG
    mem_free:%sG
    ''' % (cpu,disk.get('硬盘总量'),disk.get('硬盘使用量'),disk.get('硬盘空余量'),mem.get('内存总量'),mem.get('内存使用率'),mem.get('内存使用量'),mem.get('内存空余量'))
    if cpu >1:
        sendmail('您的cpu使用过高','使用了%s' % cpu)
    elif disk.get('硬盘空余量') < 30:
        sendmail('您的硬盘容量不足','剩余量为%s' % disk.get('硬盘空余量'))
    elif mem.get('内存使用率') > 60:
        sendmail('您的内存不足','剩余内存量为%s' % mem.get('内存空余量'))
    else:
        print('系统正常')
if __name__ == '__main__':
    main()

os模块:调用操作系统

import os  #利用python帮助我们调用windows系统命令或Linux命令  

res = os.system('ipconfig') #查看一个命令的执行结果,返回值1是失败,0是成功  

print(res)  #打印会出现乱码,解决方法,修改pycharm配File->Settings->Editor->File Encodings,把global encoding设置成gbk即可。

利用system展开思路,就是说布置很多命令,完后查看命令的执行结果。

cmds = ['service httpd restart','uname -r','update','ifconfig -a']  

for cmd in cmds:  

    res = os.system(cmd)  

if res == 0:  

print('执行成功')  

else:  

print('执行失败') 
import os    

res = os.path.exists('此处输入文件的路径即可') #判断是否存在这个文件或目录,他会返回一个布尔形式的值

比如我要创建一个文件,但我不知道这个文件是否存在。

res = os.path.exists(r'c:usersfengzidesktopa.txt')  

if res:  

print('文件已存在')  

else:  

    os.system('type nul > c:usersfengzidesktopa.txt')  
import os    

res = os.remove('此处输入文件的路径即可') #移除文件或目录 
import os  

HMOE = '/etc/yum.repo.d/'    #定义了环境变量

res = os.path.join(HOME,'a.txt') #拼接路径  
import os  

res = os.rename(原文件名字,新文件名字) #重命名 

paramiko模块:模拟ssh连接Linux主机

paramiko模块:模拟ssh连接Linux主机

import paramiko #也是属于第三方模块,它是模拟ssh协议远程连接linux主机  

ssh = paramiko.SSHClient() #声明一个变量  

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #忽略你的策略,就是know_hosts这个文件  

ssh.conect(hostname='192.168.254.70',port=22,username='root',password='root') #连接主机  

while True:  

    stdin,stdout,stderr=ssh.exec_command(input('===>:').strip()) #执行命令  

print(stdout.read().decode('gbk')+stderr.read().decode('gbk'))  

import paramiko #通过paramiko模块上传文件  

hostname = 'ip'  

port = 22  

username = 'root'  

password = 'root'  

t = paramiko.Transport(hostname,port)  

t.connect(username='',password='')  

sftp = paramiko.SFTPClient.from_transport(t)

sftp.put(r'c:usersfengziDesktopLinux.xmind','/root/aaa.xmind') #你要复制的文件绝对路径,你要复制到Linux里的绝对路径  

sftp.close() 

import paramiko #通过paramiko模块下载Linux文件 hostname = 'ip' port = 22 username = 'root' password = 'root' t = paramiko.Ttansport(hostname,port) t.connect(username='',password='') sftp = paramiko.SFTPClient.from_transport(t) sftp.get(r'/root/test/yml',r'c:usersDesktop est.yml') sftp.close()

socket模块:(基于ip地址和端口号收发消息的)

import socket

       server = socket.socket()#测试端口是否启用

       server.settimeout(1) #这是为了当你连接没有的ip时,他会等待时间非常长,为了加快结果的显示。

       server.connect_ex((’ip’,端口号)) #去连接主机端口号
server = socket.socket()#tcp协议  

server.settimeout(1)#设置超时时间  

res = server.connect_ex((ip,int(port)))  

# print(res)#res == 0代表端口号启用|res != 0代表端口号没启用  

if res == 0:  
    print('%s---%s:ok' % (ip,port))  

else:  
    print('%s---%s:不通' % (ip, port))     

re模块(正则表达式) 

#.*?叫做非贪婪匹配,尽可能的少匹配  

#.*叫做贪婪匹配,尽可能的多匹配  

# a = 'fenif1212nfi129f21f'  

# res = re.compile('(d+)').findall(a)  

# print(res)  

hosts = ['1.1.1.1:90','2.2.2.2:8080','127.0.0.1:80','3.3.3.3:50','192.168.1.1:9090']  

for host in hosts:  

    ip = re.compile('(.*?):(.*)').search(host).group(1)  

port = re.compile('(.*?):(.*)').search(host).group(2) 

config模块:装一个yum源用代码自动填充里面的内容

import configparser  

config = confingparser.ConfigParser()  

config.read('文件的绝对路径',encoding='gbk')  

congif.add_section('mysql')  

config.write(open('文件得绝对路径','w'))#保存  

config.set('mysql','baseurl','http://www.mysql.com')#往mysql这个section里添加option和value  

config.write(open('mariadb.repo','w'))#再保存  

config.remove_option('mysql','baseurl')#删除option  

config.has_option('mysql','baseurl')#查看section里有没有这个option,返回布尔形式

config.remove_section('mysql')#删除section,如果此section里有option,也一并删除  

res = config.values()#查看所有的section  

for i in res: 

    print(i)  

res = config.get('server','baseurl')#通过section和option取value  

    print(res)

pymsql模块:

#pip先安装

#而后即可connect连接数据库

db=pymsql.connect("ip",user="root",password="root",db="要测试的数据库名字",port="3306")

cur=db.cursor()  这个叫游标,有以上这两步,就可以连接数据库,去操作数据库。

for i in range(100000):
      
        cur.execute("insert into test_table values (0,'name-%s','title=%s')" % (i,i))

db.commit()

result=cur.fetchall()

cur.fetchall是查看所有数据,fetone是一条数据。

#这个是插入10万条数据。

show variables like ‘profiling’

set profiling=1;  #这是临时性的,重启数据库就又关闭了。

#profiling是查看你的sql语句执行时间的,这样就能测试索引的效率。
原文地址:https://www.cnblogs.com/shuaiyin/p/10925247.html