双子座自动化测试day6

本次博客内容记录第六次自动化测试课程(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)

猜你喜欢

转载自www.cnblogs.com/zzl991/p/10823784.html