本次博客内容记录第六次自动化测试课程(2019.04.27)的主要知识点,主要包括python基础中模块的使用,操作数据库,操作excel等知识点。
一.os模块
import os # print(os.getcwd()) # # os.mkdir(r'/Users/mac/PycharmProjects/autotest/day6/hhh') # os.chdir(r'/Users/mac/Desktop') #改变当前目录 # print(os.getcwd()) # open('zzl.hhh','w') # os.system('rm -rf zzl.hhh') #执行操作系统命令,但是不能获取命令返回结果 # result = os.system('ifconfig') # print(result) # result = os.popen('ifconfig').read()#popen 可获取到命令执行结果 # print('result============',result) # print(os.cpu_count()) #cpu数量 # os.path.join() # 连接路径的,会自动区分系统,拼接成正确路径 # BASE_PATH = 'e:/test' # file_path = BASE_PATH +'/'+'zzl.txt' # result = os.path.join('test','case','abc.txt') # print(result) # os.path.exists()# 判断目录,文件是否存在 # os.path.split()# 把路径与文件名分离 # p = r'users/mac/zzl.txt' # print(os.path.split(p)) # os.path.dirname()# 取父目录 # print(os.path.dirname(p)) # os.path.abspath()# 获取绝对路径 # /Users/mac/PycharmProjects/autotest/day6 # os.chdir('../day5') # 相对路径 # os.chdir('/Users/mac/PycharmProjects/autotest/day5') # 绝对路径 # result = os.path.abspath('../day5') # 把相对路径转换成绝对路径 # print('result',result) # os.path.getctime()# 文件创建时间 # os.path.getatime()# 文件最后访问时间 # os.path.getmtime()# 文件最后修改时间 # 统计指定目录下有多少个.txt 结尾的文件 # os.walk('path') count = 0 for current_dir,dirs,files in os.walk(r'/Users/mac/PycharmProjects/autotest/day6/abc'): print(current_dir) # 当前循环到哪个目录 print(dirs) # 当前目录下的所有文件夹 print(files) # 当前文件夹下的所有文件 for f in files: if f.endswith('.txt'): count+=1 print('count',count) #练习:找到某位同学电脑里面存的.mp4的电影有多少部,找出来在哪个目录下存着 for current_dir,dirs,files in os.walk(r'/'): print(current_dir) # 当前循环到哪个目录 print(dirs) # 当前目录下的所有文件夹 print(files) # 当前文件夹下的所有文件 for f in files: if f.endswith('.mp4'): # real_path = os.path.join(current_dir,f) # 拼接小电影的真实路径 # os.remove(real_path) # 删除所有小电影 print('发现一个小电影【%s】,目录正在【%s】'%(f,current_dir))
二.time模块
import time # 时间戳 32232332 # 格式化好的时间 2019-04-27 12:00:00 # print(time.time()) # 获取当前的时间戳 # 1556347277+86400+86400+86400 三天后的时间 # res = time.strftime('%Y-%m-%d %X') # 取当前格式化好的时间 # res1 = time.strftime('%y-%m-%d %H:%M:%S') # print(res) # print(res1) # 时间元组:用于时间戳与格式化时间互相转换 # 时间元组格式:time.struct_time(tm_year=2019, tm_mon=4, tm_mday=27, tm_hour=6, tm_min=41, tm_sec=17, tm_wday=5, tm_yday=117, tm_isdst=0) # 1.时间戳转换成格式化时间 # print(time.gmtime(1556347277)) #把时间戳转换成时间元组,取的是标准时区的时间 # time_tuple = time.gmtime(1556606465) # result = time.strftime('%Y-%m-%d %H:%M:%S',time_tuple) # print(result) # # time_tuple1 = time.localtime(1556606465)# 把时间戳转换成时间元组,取的是当地的时间 # result1 = time.strftime('%Y-%m-%d %H:%M:%S',time_tuple1) # print(result1) # 2.格式化时间转换成时间戳 # time_tuple2 = time.strptime('19980323174859','%Y%m%d%H%M%S') # 把格式化的时间转成时间元组 # result2 = time.mktime(time_tuple2) # 把时间元组转换成时间戳 # print(result2) def str_to_timestamp(str_time = None,format = '%Y-%m-%d %H:%M:%S'): """格式化好的时间转成时间戳,如果不传入获取当前时间戳""" if str_time: time_tuple = time.strptime(str_time,format) # 把格式化好的时间转换成时间元组 result = time.mktime(time_tuple) # 把时间元组转成时间戳 return result return int(time.time()) # 获取当前的时间戳 print(str_to_timestamp()) def timestamp_to_str(timestamp = None,format ='%Y-%m-%d %H:%M:%S' ): """时间戳转换成格式化好的时间,如果没有传时间戳,就获取当前的格式化时间""" if timestamp: time_tuple = time.localtime(timestamp) # 把时间戳转成时间元组 result = time.strftime(format,time_tuple) return result else: return time.strftime(format)
三.列表生成式
l = [] # 01 02 03 - 10 for i in range(1,11): l.append(str(i).zfill(2)) print(l) # 把以上代码简写成一行-->代码生成式 l2 = [str(i).zfill(2) for i in range(1,11)] print(l2) #-------------------------------------------------------- # 练习:用列表生成式创建10个文件/文件夹 f = [open('%s.txt'%i,'w') for i in range(1,11)] import os f2 = [os.mkdir(str(i)) for i in range(1,11)] #-------------------------------------------------------- # 后面也可以加一个if判断 f2 = [os.mkdir(str(i)) for i in range(1,11) if i%2 ==0] #-------------------------------------------------------- sex_tag = 0 if sex_tag: sex = '女' else: sex = '男' # 简写以上代码-->三元表达式 sex = '女' if sex_tag==0 else '男'
四.一些内置函数
# sorted() # s = '21121' # l = [42,3,1] # print(sorted(l)) # print(list(reversed(sorted(l)))) # print(sorted(l, reverse=True)) # print(sorted(s)) # map 循环调用函数,获取到函数的返回结果,用map后外面要强制转换成list # def zfill(num): # num = str(num) # if len(num) == 1: # num = '0' + num # return num # 生成01-33 有以下1-3种方法可实现 #1 # l = [] # for i in range(1,34): # result = zfill(i) # l.append(result)] # print(l) # #2. # l = [ zfill(i) for i in range(1,34)] #3. # result = list(map(zfill,range(1,34))) # filter 过滤,循环调用函数,把传入参数返回真的保存,把 # import random # for i in range(10): # res = random.sample(range(10,101),10) # print(res) score = [34, 30, 76, 58, 100, 47, 17, 67, 45, 83] def is_jg(s): if s>59: return True # 1. # jg = [] # for i in score: # if is_jg(i): # jg.append(i) # print(jg) #2. result = list(filter(is_jg,score)) result2 = list(map(is_jg,score)) print('filter结果',result) print('map结果',result2)
五.加密
import hashlib s = '123456' print(s.encode())# 字符串转成bytes m = hashlib.md5(s.encode()) # 加密 n = hashlib.sha256(s.encode()) result = n.hexdigest() #获取加密结果 print(result) #md5加密是不可逆的 #撞库 #加盐 s = '123456'+'&^%$$GGHH' #为用户设置的字符串加上固定的私密字符串,提高安全性 def md5(s,salt = '&^%$$GGHH'): s = (str(s)+salt).encode() m = hashlib.md5(s)# 加密 return m.hexdigest()
六.python操作数据库
import pymysql #ip 118.24.3.40 #port 3306 要写成int类型 #user jxz #password 123456 #db jxz #1.连接数据库 conn = pymysql.connect(host='118.24.3.40', port=3306, user='jxz', password='123456', db='jxz', charset = 'utf8', autocommit = True) #2.建立游标 ()内的参数代表控制返回结果dict类型,可以不加 # cur = conn.cursor(pymysql.cursors.DictCursor) #建立游标,相当于仓库管理员; #3.执行sql语句 # sql = 'select * from app_myuser limit 5; ' # sql = " insert into app_myuser (username,passwd,is_admin) values ('zhaozhulin2','123456','1');" # cur.execute(sql) # 执行sql语句 # conn.commit() #提交 除了select命令外,其他操作需要commit #4.获取结果 # result = cur.fetchall() #获取所有的结果,只在查询时会有结果 # result = cur.fetchone() #获取一条结果,与sql返回结果固定为一条时搭配使用 # print(result) #5.关闭连接 # cur.close() # 游标关闭 # conn.close() # 连接关闭 def op_mysql(info,sql:str): result = '执行完成' conn = pymysql.connect(**info) cur = conn.cursor(pymysql.cursors.DictCursor)# 建立游标 cur.execute(sql) if sql.strip().lower().startswith('select'): result = cur.fetchall() cur.close() conn.close() return result mysql_info = {'host':'118.24.3.40', 'port':3306, 'user':'jxz', 'password':'123456', 'db':'jxz', 'charset':'utf8', 'autocommit':True} insert_sql = " insert into app_myuser (username,passwd,is_admin) values ('zhaozhulin','123456','1');" select_sql = "select * from app_myuser where username = 'zhaozhulin';" update_sql = "update app_myuser set passwd='1234' where username = 'zhaozhulin';" delete_sql = "delete from app_myuser where username = 'zhaozhulin';" result = op_mysql(mysql_info,delete_sql) result = op_mysql(mysql_info,select_sql) print(result)
七.python写excel
# import xlwt # book = xlwt.Workbook() # sheet = book.add_sheet('哈哈哈')# 新建sheet页 # sheet.write(0,0,'姓名') # 第一个0是行,第二个0是列 # sheet.write(0,1,'成绩') # sheet.write(1,0,'zzl') # sheet.write(1,1,100) # book.save('stu.xls') l = ['ios','android','nginx','tomcat','python','blog'] import time,os for i in l: p = 'logs/%s/'%i os.mkdir(p)