python常用模块
yagmail
1、首先安装yagmail软件。
pip install yagmail
2、yagmail使用方法:
三步实现发送邮件
import yagmail
# 1.实例化出来一个yagmail对象
yag = yagmail.SMTP(user='1362394088@qq.com',
password='roaspxrdhkdefjbf', host='smtp.qq.com')
# 2.发送邮件操作
yag.send(to='1362394088@qq.com',subject=a, contents=b)
# 3.关闭邮箱
yag.close()
configparser
一、ConfigParser简介
ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。
import configparser
config = configparser.ConfigParser()
config.read('a.txt',encoding='utf-8')
列出所有标题
data = config.sections()
print(data)
利用section写入key=value,修改某个option的值,如果不存在则会出创建
config.set('base','name','http://www.baidu.com')
config.write(open('a.txt','w'))
列出所有的key
data = config.options('base')
print(data)
利用seciton和option取value
data = config.get('base','enabled')
print(data)
利用section取出所有的键值对
data = config.items('base')
print(data)
判断文件中是否有section
res = config.has_section('base1')
print(res)
判断section下是否有指定的option
res = config.has_option('base','baseurl')
print(res)
删除option
config.remove_option('base','name')
config.write(open('a.txt','w'))
删除secion(会把下面的key value全部删除)
config.remove_section('centos7')
config.write(open('a.txt','w'))
paramiko:模拟ssh登录linux主机,也有上传下载功能
pip install paramiko
1、ssh连接linux主机
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.254.10',port=22,username='root',password='root')
while True:
cmd = input('#').strip()
if cmd:
stdin, stdout, stderr = ssh.exec_command(cmd)
print(stdout.read().decode('utf-8'))
2、上传,下载
import paramiko
t=paramiko.Transport(('192.168.254.10',22))
t.connect(username='root',password='root')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(r'C:\Users\Administrator.USER-20190512NQ\Desktop\python3
模块.txt', '/root/python3模块.txt')
sftp.get('/root/a.txt',r'C:\Users\Administrator.USER-20190512NQ\Desktop\a.txt')
sftp.close()
OS模块的使用
import os
1、获取当前路径
res = os.getcwd()
print(res)
2、chdir改变所在目录
os.getcwd()
os.chdir('app01')
res = os.getcwd()
print(res)
3、mkdirs递归创建目录,mkdir -p
os.makedirs('a/b/c')
4、mkdir 新建目录,只能建一层
os.mkdir('a')
5、rmdir删除目录
os.rmdir('a')
6、listdir以列表形式查看目录所有文件(包括隐藏文件)
res = os.listdir('app01')
print(res)
7、remove 删除指定的一个文件
os.remove('a.txt')
8、rename重命名
os.rename("a.txt","aaa.txt")
9、查看文件的详细信息
print(os.stat("aaa.txt"))
10、文件或目录是否存在
res = os.path.exists('static')
print(res)
11、isdir判断是否是一个目录
res = os.path.isdir('aaa.txt')
print(res)
12、isfile判断是否是一个文件
res = os.path.isfile('static')
print(res)
13、paht.join,拼接路径
BASE_DIR = r'C:\Users\Administrator.USER-20190512NQ\Desktop\test_django\app01'
file_name = '250.txt'
res = os.path.join(BASE_DIR,file_name)
print(res)
14、echo $?查看上一个命令是否执行成功,如果成功返回0,如果不成功返回非0
res = os.system('asdasd')
print(res)
socket模块
1、linux服务器(半双工)
import socket
import subprocess
import threading
server = socket.socket()
server.bind(('', 8888))
server.listen(5)
print('等待电话.....')
conn, addr = server.accept()
print('电话来了......')
while True:
data = conn.recv(10240)
cmd = subprocess.Popen(data.decode('utf-8'),
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout = cmd.stdout.read()
stderr = cmd.stdout.read()
conn.send(stdout + stderr)
客户端
import socket
import threading
client = socket.socket()
client.connect(('192.168.254.24', 8888))
while True:
info = input('===>:')
if not info:continue
client.send(info.encode('utf-8'))
data = client.recv(10240)
print(data.decode('utf-8'))
2、全双工电话
#服务器端
import socket
import subprocess
import threading
server = socket.socket()
server.bind(('', 8888))
server.listen(5)
print('等待电话.....')
conn, addr = server.accept()
print('电话来了......')
def recv():
while True:
data = conn.recv(10240)
print(data.decode('utf-8'))
def send():
while True:
data = input('===>:')
conn.send(data.encode('utf-8'))
t1 = threading.Thread(target=recv)
t2 = threading.Thread(target=send)
t1.start()
t2.start()
#客户端
import socket
import threading
client = socket.socket()
client.connect(('localhost', 8888))
def send():
while True:
info = input('===>:')
client.send(info.encode('utf-8'))
def recv():
while True:
data = client.recv(1024)
print(data.decode('utf-8'))
t1 = threading.Thread(target=send)
t2 = threading.Thread(target=recv)
t1.start()
t2.start()
3、监测端口
import socket
socket.setdefaulttimeout(1)
host_list =['192.168.4.145:5555','192.168.4.146:555','192.168.4.147:5555','192.168.
31.199:445']
for info in host_list:
server = socket.socket()
ip = re.compile('(.*?):(.*)').search(info).group(1)
port = re.compile('(.*?):(.*)').search(info).group(2)
res = server.connect_ex((ip, int(port)))
if res == 0:
print('%s--%s端口正常' % (ip, port))
else:
print('%s--%s端口异常' % (ip, port))