模块
模块有三种
1.标准模块,不需要单独安装,python自带模块
2.第三方模块,别人写好,使用得安装
3.自己写的python文件
import random
print(random.randint(10000,99999)) #随机取一个整数
print(random.uniform(1,900)) #取一个小数
stus = ['xiaojun','hailong','yangfan','tanailing','yangyue','cc']
print(random.choice('abcdefg')) #随机取一个元素
print(random.sample(stus,2)) #随机取N个元素
l = list(range(1, 101))
print("洗牌之前", l)
print(random.shuffle(l)) #洗牌,这个只能传list
print("洗牌之后的", l)
作业
1、写一个函数,函数的功能是生成一批密码,存到文件里面
def gen_password(num):
#num代表生成多少条密码
pass
2、密码复杂度要求
1、长度在,8-16位之间
2、密码必须包括大写字母、小写字母、数字、特殊字符
3、密码不能重复
3、生成的密码保存到文件里面
2、写一个函数,函数的功能生成一批双色球号码
def gen_seq(num):
pass
1、中奖号码由6个红色球号码和1个蓝色球号码组成。
红球的范围是 1-33
篮球的范围是:1-16
2、产生的不能重复
篮球: 05 红球: 01 03 05 17 18 32
篮球: 05 红球: 01 03 05 17 18 32
篮球: 05 红球: 01 03 05 17 18 32
篮球: 05 红球: 01 03 05 17 18 32
#作业1
import random
import string
def gen_passwords1():
pwd_len = random.randint(8,16)
upper = random.sample(string.ascii_uppercase,1)
lower = random.sample(string.ascii_lowercase,1)
digit = random.sample(string.digits,1)
punctuation = random.sample(string.punctuation,1)
other = random.sample(string.ascii_letters+string.digits+string.punctuation,pwd_len-4)
res = upper+lower+digit+punctuation+other
random.shuffle(res)
return ''.join(res)
def gen_password2():
pwd_len = random.randint(8,16)
all_str = string.ascii_letters+string.digits+string.punctuation
res = set(random.sample(all_str,pwd_len))
if res & set(string.ascii_uppercase) and res & set(string.digits) \
and res & set(string.ascii_lowercase) and res & set(string.punctuation):
return ''.join(res)
return gen_password2()
all_passwords = set()
num = int(input("请输入要产生多少条密码:").strip())
while len(all_passwords) != num:
res = gen_passwords1()+'\n'
all_passwords.add(res)
with open('passwords.txt','w',encoding='utf-8') as fw:
fw.writelines(all_passwords)
#列表生成式
#res = ['01','02','03','33']
#res = []
# for i in range(1,34):
# res.append(str(i).zfill(2))
l = [i for i in range(10)] #先写for i in range(10),把生成的i放前面再写
print(l)
res = [str(i).zfill(2) for i in range(1,34)]
print(res)
#列表生成式
import random
def gen_seq():
all_red_ball = [str(i).zfill(2) for i in range(1,34)]
all_blue_ball = [str(i).zfill(2) for i in range(1,17)]
blue = random.choice(all_blue_ball)
red = random.sample(all_red_ball,6)
red = ''.join(red)
return '红球:%s 蓝球:%s'%(red, blue)
all_seq = set()
num = int(input("请输入要产生多少条密码:").strip())
while len(all_seq) != num:
res = gen_seq()+'\n'
all_seq.add(res)
with open('seq.txt','w',encoding='utf-8') as fw:
fw.writelines(all_seq)
常用模块
os模块
import os
os.rename(old, new) #重命名
os.remove(f) #删除文件
os.mkdir('china/beijing') #创建文件夹,父目录存在才能创建下级目录
os.makedirs('china/beijing') #父目录不存在会自动创建
os.removedirs('china') #只能删除空文件夹
print(os.listdir("e:\\")) #显示该目录下的所有文件和文件夹
print(os.path.isdir('E:\\apache-jmeter-3.3')) #判断是否是文件夹
print(os.path.isfile('e:\\2018年度项目工作总结及规划.pptx')) #判断是否为文件
print(os.path.exists('E:\\apache-jmeter-3.3')) #判断文件或文件夹是否存在
res1 = os.system('dir') #执行操作系统命令
res2 = os.popen('ipconfig').read() #执行系统操作命令后并返回值
print(res2)
os.path.join('china','a.py') #拼接路径
os.path.split(r'D:\China\beijing\a.py') #把路径和文件名分割开
os.path.dirname(r'D:\China\beijing\a.py') #取父目录
os.path.getsize(r'D:\China\beijing\a.py') #取文件大小,单位是字节
os.getcwd() #取当前目录
os.chdir(r'D:\China\beijing') #进入到哪个目录
os.path.getatime() #获取文件时间
res = os.walk('D:\\') #遍历所有目录和文件
count = 0
for cur_path,dirs,files in res:
#print('文件:',files,'当前目录:',cur_path,'文件夹',dirs)
for f in files:
if f.endswith('py'):
#count += 1
os.remove(os.path.join(cur_path,f))
print(count)
def find_file(path, keyword):
#查找文件的
res = os.walk(path)
for cur_path, dirs, files in res:
for file_name in files:
if keyword in file_name:
print("该文件在%s下面" %cur_path)
find_file("D:\\","设备部接口新.jmx")
time模块
import time
time.sleep(30)
res = time.strftime('%Y-%m-%d %H:%M:%S') #取当前的格式化日期
res = time.time() #获取当前的时间戳
time_tuple = time.strptime('2038-08-29 19:23:59','%Y-%m-%d %H:%M:%S') #把格式化好的时间转成时间元组,返回的是一个时间戳
print(time.mktime(time_tuple))
#格式化时间转时间戳
def str_to_timestamp(time_str=None,format='%Y%m%d%H%M%S'):
#格式化好的时间转时间戳
#不传参数的话返回当前的时间戳
if time_str:
time_tuple = time.strptime(time_str, format) # 把格式化好的时间转成时间元组
timestamp = time.mktime(time_tuple)
else:
timestamp = time.time()
return int(timestamp)
print(str_to_timestamp())
print(str_to_timestamp('20391123175123'))
print(str_to_timestamp('2013-08-09','%Y-%m-%d'))
res = time.gmtime(time.time())#是把时间戳转时间元组的,标准时区
res = time.localtime(time.time())#是把时间戳转时间元组的,当前时区
res2 = time.strftime('%Y-%m-%d %H:%M:%S',res)
print(res2)
def timestamp_to_strtime(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
#这个函数是用来把时间戳转成格式化好的时间
#如果不传时间戳的话,那么就返回当前的时间
if timestamp:
time_tuple = time.localtime(timestamp)
str_time = time.strftime(format,time_tuple)
else:
str_time = time.strftime(format)
return
#用当前的时间戳+相应年的秒数,时间戳转成格式化好的时间
five = str_to_timestamp() - (3*24*60*60)
res = timestamp_to_strtime(five)
print('3天后的时间是',res)
加密模块
import hashlib
# import md5 #这个是python2里面的
password='123123'
print(password.encode())#转成二进制类型的才可以加密
m = hashlib.md5(password.encode())
m = hashlib.sha1(password.encode())
m = hashlib.sha224(password.encode())
m = hashlib.sha256(password.encode())
print(m.hexdigest())
#md5加密之后是不可逆
def my_md5(s:str,salt=None):
#salt是盐值
s = str(s)
if salt:
s = s+salt
m = hashlib.md5(s.encode())
return m.hexdigest()
读Excel
import xlrd
book = xlrd.open_workbook('stu.xls')
sheet = book.sheet_by_index(0)
sheet = book.sheet_by_name('sheet1')
print(sheet.nrows) #excel里面有多少行
print(sheet.ncols) #excel里面有多少列
print(sheet.cell(0,0).value) #获取到指定单元格的内容
print(sheet.cell(0,1).value) #获取到指定单元格的内容
print(sheet.row_values(0))#获取到整行的内容
print(sheet.col_values(0))#获取到整行的内容
for i in range(sheet.nrows):#循环获取每行的内容
print(sheet.row_values(i))
写Excel
import xlwt
import xlrd
import xlutils
#写Excel
book = xlwt.Workbook()
sheet = book.add_sheet('sheet1')
# sheet.write(0,0,'id')#指定行和列写入内容
# sheet.write(0,1,'username')
# sheet.write(0,2,'password')
#
# sheet.write(1,0,'1')
# sheet.write(1,1,'niuhanyang')
# sheet.write(1,2,'123456')
#
stus = [
[1,'njf','1234'],
[2,'xiaojun','1234'],
[3,'hailong','1234'],
[4,'xiaohei','1234'],
[4,'xiaohei','1234'],
[4,'xiaohei','1234'],
[4,'xiaohei','1234'],
[4,'xiaohei','1234'],
[4,'xiaohei','1234'],
]
line = 0 #控制的是行
for stu in stus:#行
col = 0
for s in stu:
sheet.write(line,col,s)
col+=1
line+=1
book.save('stu.xls')# .xlsx
修改Excel
import xlrd
from xlutils import copy
book = xlrd.open_workbook('stu.xls')
#先用xlrd打开一个Excel
new_book = copy.copy(book)
#然后用xlutils里面的copy功能,复制一个Excel
sheet = new_book.get_sheet(0)#获取sheet页
sheet.write(0,1,'hello')
sheet.write(1,1,'world')
new_book.save('stu.xls')
操作Mysql
host='118.24.3.40'
user='jxz'
password='123456' #密码只能是字符串
db='jxz'
port=3306#端口号只能写int类型
charset='utf8'#只能写utf8,不能写utf-8
import pymysql
conn = pymysql.connect(host=host,password=password,
user=user,db=db,port=port,
charset=charset,autocommit=True
)#建立连接
cur= conn.cursor() #建立游标
# cur.execute()#只是帮你执行sql语句
# print(cur.fetchall())#获取数据库里面的所有的结果
# print('fetchone',cur.fetchone()) #如果只有一行数据使用fetchone
# sql='insert into app_myuser (username,passwd,is_admin) VALUE ("python123456","123456",1);'
sql='select * from app_myuser limit 5;'
cur.execute(sql)
print(cur.description)#获取这个表里面的所有字段信息
# conn.commit()#提交
cur.close()
conn.close()
def my_db(ip,user,password,db,sql,port=3306,charset='utf8'):
conn = pymysql.connect(
host=ip,user=user,password=password,
db=db,
port=port,charset=charset,autocommit=True
)
cur = conn.cursor()
cur.execute(sql)
res = cur.fetchall()
cur.close()
conn.close()
return res
def my_db2(sql):
conn = pymysql.connect(
host='118.24.3.40',user='jxz',password='123456',
db='jxz',
port=3306,charset='utf8',autocommit=True
)
pass
汉字转拼音
import xpinyin
s = xpinyin.Pinyin()
py = s.get_pinyin("你好",'')
print(py)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。