• Python笔记五(写excel,加密模块,字典排序,常用的标准模块,操作mysql,时间模块)


    1.函数返回值

    函数如果返回多个值的话,他会把这几个参数值,都放到一个元组里面
    函数若返回多个值的话,可以用多个变量来接收即可
    1 def say():
    2     num1 = 1
    3     num2 = 2
    4     num3 = 3
    5     return num1,num2,num3
    6 res = say()
    7 print(res)
    8 res1,res2,res3= say()
    9 print(res1,res2,res3)

    2.匿名函数:

    这个函数功能很简单,只用一次。   lambda定义匿名函数
    1 res = lambda x:x+1 #前面X代表函数返回值,后面x+1代表函数体
    2 print(res(1))

    3.列表生成器

     1 import random
     2 red_num= random.sample(range(1,34),6)
     3 #外面是小括号的话,他就不是一个list了,他是一个生成器
     4 # 生成器比list要节约内存,他是每次循环的时候,会根据规则计算一个元素,放到内存里面。
     5 # list他是把所有的元素都放在内存里面。
     6 l  = [i for i in  range(1,101,2)]#生成100以内的奇数
     7 new_num = [str(num).zfill(2)for num in red_num] #列表生成式
     8 print(new_num)
     9 print(l)
    10 
    11 #生成器例子
    12 l  = (i for i in  range(1,101,2))
    13 for l2 in l:
    14     print(l2)
    15 print(l.__next__)#表示每次打印一个值
    16 
    17 # #下面的这一串与上面的【列表生成式】的作用一样
    18 for num in red_num:
    19     temp = str(num).zfill(2)
    20     new_num.append(temp)
    21 print(new_num)
    22 
    23 
    24 # #练习一(列表生成式)
    25 a = 5
    26 b = 4
    27 if a>b:
    28     c= a
    29 else:
    30     c= b
    31 
    32 c = a if a>b else b #三元表达式

     4.字典排序

     1 d = {'a':4,'c':2,'b':3}
     2 
     3 #字典是无序,直接对字典排序是不存在的
     4 print(d.items())
     5 print(sorted(d.items()))#sorted帮我们循环调用生成了一个二维数组,默认是按照key排序的
     6 res=sorted(d.items(),key=lambda x:x[0])#根据key排序
     7 res1=sorted(d.items(),key=lambda x:x[1])#根据value排序
     8 print(res)
     9 print(res1)
    10 
    11 for k,v in res:#循环二维数组
    12     print(k,v)
    13 
    14 l =[
    15     [1,2,3,4],
    16     [1,2,4,3]
    17 ]
    18 for a,b,c,d in l:
    19     print(a,b,c,d)
    20 
    21 def my(name:str):
    22     print(name)
    23 my(['123','456'])

    5.常用标准模块

     1 import os
     2 print(os.getcwd())#取当前工作目录
     3 os.chmod("D:syz1T_code1day6",2)#给文件/目录加权限,对windows下面不好使用
     4 # 1 执行
     5 # 2 写
     6 # 4 读
     7 # chmod 加权限
     8 print(os.chdir("../"))#更改当前目录
     9 print(os.curdir)#当前目录
    10 print(os.pardir)#父目录
    11 
    12 print(os.makedirs("hh/h1"))#递归创建文件夹,父目录不存在时创建父目录
    13 print(os.mkdir("yjy/python"))#创建文件夹
    14 # makedirs创建文件夹的时候,如果父目录不存在会自动帮你创建父目录
    15 #mkdir创建文件夹的时候,如果父目录不存在会报错
    16 
    17 
    18 print(os.removedirs("/usr/hehe/hehe1"))#递归删除空目录
    19 print(os.rmdir("test1"))#删除指定的文件夹
    20 #只能删除空目录
    21 
    22 print(os.remove("test1"))#删除文件
    23 print(os.listdir('.'))#列出一个目录下的所有文件
    24 os.rename("test","test1")#重命名
    25 print(os.stat("len_os.py"))#获取文件信息
    26 print(os.sep)#当前操作系统的路径分隔符
    27 print(os.linesep)#当前操作系统的换行符
    28 print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
    29 print(os.environ)#当前系统的环境变量
    30 print(os.name)#当前系统名称 windows系统都是nt,linux都是posix
    31 res=os.system('ipconfig') #执行操作系统命令的os.system('dir'),但是获取不到结果
    32 print(res) #0代表是不是执行成功,0代表成功 显示乱码
    33 res = os.popen('ipconfig').read()#执行操作系统命令,可以获取到命令执行结果,但是只能获取静态命令(top -n l  一秒去取一次) os.popen('top -n 1').read(),动态命令不可以(top)
    34 print(res)
    35 
    36 print(__file__)#获取到当前文件的绝对路径
    37 print(os.path.abspath(__file__))#获取绝对路径
    38 print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名
    39 
    40 print(os.path.dirname("d:\syz\T_code1"))#获取父目录
    41 print(os.path.basename("d:\syz\T_code1"))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名
    42 print(os.path.exists("/usr/local"))#目录/文件是否存在
    43 print(os.path.isabs("."))#判断是否是绝对路径
    44 print(os.path.isfile("/usr/local"))#判断是否是一个文件,1.文件要存在2.必须是一个文件
    45 print(os.path.isdir("d:\syz"))#是否是一个路径,目录是否存在
    46 print(os.path.getsize('x.py'))#获取文件大小,可以限制上传文件的大小
    47 print(os.path.join("root",'hehe','a.sql'))#拼接成一个路径
    48 
    49 for abs_path,dir,file in os.walk('D:syz1T_code1day6'):#获取目录
    50     print(abs_path,dir,file)
    51     # abs_path当前循环的绝对路径
    52     # dir 目录下面所有的文件夹[]
    53     # file目录下面所有文件[]

     6.导入模块的顺序

     1      # python导入模块的时候顺序:
     2     # 1.从当前目录下面找需要导入的Python文件。
     3     # 2.从Python的环境变量中找 sys.path(方法二:把Python文件放到C:\Miniconda3\DLLs目录下面)
     4 # 导入模块的实质:
     5 #    就是把Python文件从头到尾执行一遍
     6 
     7 
     8 import sys
     9 print(sys.platform)#判断操作系统
    10 print(sys.path)#python的安装目录环境变量
    11 print()
    12 print(sys.argv)#用来获取命令行里面运行Python文件的时候传入的参数
    13 
    14 #导入模块的两种方法
    15 
    16 #导入当前目录下面的模块,当前目录下面创建一个y python文件
    17 #方法一
    18 import y
    19 print(y.name)
    20 y.my()
    21 
    22 #方法二
    23 from y import my,name
    24 my()
    25 print(name)
    26 #方法三,但是不建议使用,因为方法比较多的时候不知道调用的哪个
    27 from yimport * #导入所有的
    28 my()
    29 print(name)
    30 
    31 #导入其他目录下面的文件
    32 #如果要导入其他目录下的文件,就把这个目录加入到环境变量里面
    33 sys.path.append(r'D:syz1T_code1day5')#添加到环境变量里面,这个位置默认添加到最后一位
    34 sys.path.insert(0,r'D:syz1T_code1day5')#添加到环境变量里面第一位
    35 print(sys.path)
    36 import my_random  #导入day5目录下面的my_random.py文件

    下面是一个练习题:

     1 #把双数日期的日志,里面给随便写点东西
     2 # 1.获取到log目录下面的所有文件 os.walk()
     3 # 2.根据文件名来判断,是否是双数日期,分割字符串,取到日期
     4 # 3.取到值之后12%2==0
     5 # 4.打开这个文件open(),最后写入文件
     6 
     7 import os
     8 for abs_path,dir,file in os.walk('D:syz1T_code1day6logs'):#获取目录
     9     # print(abs_path,dir,file)
    10     for f in file:
    11         print(f)
    12         day = f.split('.')[0].split('-')[2]
    13         if int(day)%2==0:
    14             file_name = os.path.join(abs_path,f)#拼接绝对路径
    15             open(file_name,'a+',encoding='utf-8').write('写东西')

    7.sys.argv 的作用是用来获取命令行里面运行Python文件的时候传入的参数,例子

     1 #在命令里面运行的。如:Terminal里面运行
     2 import sys,os
     3 command = sys.argv
     4 print(command)
     5 if len(command)>1:
     6     cmd1 = command[1] #因为sys.argv第一个文件名,第二个才是参数
     7     if cmd1 =='--help':
     8         print('这个是帮助文档''这个Python文件是用来说明sys.argv的作用')
     9     elif cmd1 =='os':
    10         print('当前的操作系统是%s'%sys.platform)
    11     else:
    12         print('输入命令有误')
    13 else:
    14     print('运行Python文件的时候要传入一个参数''e.g''python xx.py install')

    在Terminal里面运行命令如:python 文件名.py  --help 测试

    8.时间模块

     1 import time
     2 #1.时间戳 从Unix元年到现在过了多少秒
     3 #2.格式化好的时间
     4 
     5 
     6 print(time.time())#获取当前时间戳
     7 time.sleep(10)#停留多少秒之后在运行下面的
     8 print('嘿嘿')
     9 today = time.strftime('%Y-%M-%d %H:%M:%S')#获取当前日期
    10 today1 = time.strftime('%Y%M%d%H%M%S')#这里的写法灵活
    11 print(today)
    12 print(today1)
    13 
    14 print(time.gmtime())#默认取的的是标准时区的时间
    15 print(time.localtime())#获取当前时区的时间
    16 
    17 # 时间戳转换时间元组
    18 # 1.时间戳转成时间元组time.localtime()
    19 # 2.再把时间园区转化成格式化的时间
    20 s = time.localtime(1514198608)
    21 print(time.strftime('%Y-%M-%d %H:%M:%S',s))
    22 
    23 # 时间戳转换时间元组  函数写法
    24 def timestamp_to_format(timestamp = None,format ='%Y-%M-%d %H:%M:%S'):
    25     # 1.默认返回当前格式化好的时间
    26     # 2.传入时间戳的话,把时间戳转换成格式化好的时间,返回
    27     if timestamp:
    28         time_tuple=time.localtime(timestamp)
    29         res=time.strftime(format,time_tuple)
    30     else:
    31         res = time.strftime(format)
    32     return res
    33 print(timestamp_to_format())
    34 print(timestamp_to_format(1914198608,'%Y-%m'))
    35 
    36 #2018-4-21怎么把格式化的时间转为时间元组的
    37 
    38 print(time.strptime('2017-09-09','%Y-%m-%d'))#怎么把格式化的时间转为时间元组的
    39 s = time.mktime(time.strptime('2017-09-09','%Y-%m-%d'))#把时间元组转成时间戳
    40 print(s)
    41 
    42 
    43 def strToTimestamp(str=None,format='%Y%m%d%H%M%S'):
    44     #20180421165643
    45     #默认返回当前时间戳
    46     if str:#如果传了时间的话
    47         tp = time.strptime(str,format)#转成时间元组
    48         res = time.mktime(tp)#再转成时间戳
    49     else:
    50         res = time.time()#默认取当前的时间戳
    51 
    52     return int(res)
    53 print(strToTimestamp())
    54 print(strToTimestamp('20180421165643'))
    55 print(strToTimestamp('2018-09-09','%Y-%m-%d'))
    56 
    57 import datetime
    58 datetime.datetime.today()#获取当前时间,精确到秒
    59 datetime.date.today()#精确到天
    60 res = datetime.date.today()+datetime.timedelta(days=-5)#获取到5天前的时间
    61 res = datetime.date.today()+datetime.timedelta(days=1,minutes=5,seconds=5,weeks=5)#5秒后
    62 print(res.strftime('%Y-%m-%d'))

    9.加密模块

     1 import hashlib
     2 
     3 m = hashlib.md5()
     4 #bytes
     5 passwd = 'yjy123'
     6 print(passwd.encode())#把字符串转成bytes类型
     7 m.update(passwd.encode())#不能直接对字符串加密,要先把字符串转成bytes类型
     8 print(m.hexdigest())
     9 
    10 #md5加密是不可逆的
    11 
    12 #加密md5函数
    13 def my_md5(str):
    14     new_str = str.encode()#把字符串转成bytes类型
    15     # new_str = b'%s'%str#把字符串转成bytes类型
    16     m = hashlib.md5() #实例化md5对象
    17     m.update(new_str) #加密
    18     return  m.hexdigest()#获取结果返回
    19 
    20 #另外一种加密方式,加密的更长
    21 m= hashlib.sha256()
    22 m.update(passwd.encode())
    23 print(m.hexdigest)

    10,操作mysql

     1 import pymysql
     2 #1.连上数据库 账号,密码 ip 端口号 数据库
     3 #2,建立游标
     4 #3.执行sql
     5 #4.获取结果
     6 #5.关闭游标
     7 #6.链接关闭
     8 con = pymysql.connect(
     9     host='192.168.174.128',
    10     user='root',
    11     passwd = '123456',
    12     port = 3306,
    13     db ='zuoye',
    14     charset = 'utf8'
    15     #port必须写int类型,charset这里必须写utf8
    16 )
    17 cur = con.cursor()#建立游标
    18 cur.execute('insert into students(Id,Name,Sex,age,class,Addr) values(12,"hh","女",18,"胡巴","山东");')
    19 #delete update insert 语句必须得commit才可以
    20 con.commit()#必须得commit才可以
    21 cur.execute('select * from students;')#执行sql语句
    22 res = cur.fetchall()#获取所有返回的结果
    23 print(res)
    24 cur.close()#关闭游标
    25 con.close()#关闭链接

    定义函数mysql,基本不用,以后都是用封装函数

     1 def my_db(host,user,passwd,db,sql,port=3306,charset='utf8'):
     2     import pymysql
     3     coon = pymysql.connect(user = user,
     4                            host = host,
     5                            port= port,
     6                            passwd = passwd,
     7                            db=db,
     8                            charset=charset
     9                            )
    10 
    11     cur = coon.cursor()#建立游标
    12     cur.execute(sql)#执行sql
    13     if sql.strip()[:6].upper()=='SELECT':
    14         res = cur.fetchall()
    15     else:
    16         coon.commit()
    17         res = 'ok'
    18     cur.close()
    19     coon.close()
    20     return res

    11.往excel里面写内容

    1 import xlwt
    2 
    3 book = xlwt.Workbook()#新建一个excel
    4 sheet = book.add_sheet('sheet1')#加sheet页
    5 sheet.write(0,0,'姓名')#行,列,写入的内容
    6 sheet.write(0,1,'年龄')
    7 sheet.write(0,2,'性别')
    8 book.save('stu.xls')#结尾一定要用.xls
  • 相关阅读:
    IP地址分类
    HTTP协议基础
    PHP中md5()函数绕过
    支付宝转账
    前端常用小工具
    防抖和节流
    分模块简单使用vuex
    vue-cli 2+antd定制主题
    浅谈Promise
    vue中用js实现文件上传和文件下载
  • 原文地址:https://www.cnblogs.com/xmhd/p/8967991.html
Copyright © 2020-2023  润新知