zoukankan      html  css  js  c++  java
  • (九)random、os、time、datetime、hashlib、pymysql、excel、sys、string相关模块

    1、random模块

     1 import random,string
     2 print(string.printable) #代表所有的 数字+字母+特殊字符
     3 
     4 print(random.randint(1,10))  #从1-10随机取一个整数
     5 print(random.uniform(1,99))  #随机取一个小数 #>>>73.5928709012442
     6 print(round(random.uniform(1,99),2)) #配合round(),表示随机取小数点后2位的小数  #>>>59.22
     7 print(random.choice([1,2,3,4])) #只能随机取1个元素(列表或字符串)
       print(random.choice('abcde'))
     9 print(random.sample(string.printable,5)) #随机取N个元素,返回的是list  #>>>['A', 'x', ',', ')', 'E']
    10 
    11 random.shuffle([xxx])  #洗牌(打乱顺序)
      pickts = ['A','J','Q','K',2,3,4,5,6]
      random.shuffle(pickts) #只能传list(因为字符串不能修改)
      print(pickts)

     

    2、os模块

    import os
    print(os.getcwd())   #获取当前工作目录
    os.chmod("/usr/local",7)  #给文件/目录加权限(linux上使用)
    
    print(os.chdir("../day5")) #更改当前目录,返回None #print(os.getcwd())
    print(os.curdir) #当前目录,.
    print(os.pardir) #父目录,..
    
    print(os.makedirs("/usr/hehe/hehe1"))#递归创建文件夹,父目录不存在时自动创建父目录
    print(os.mkdir("test1")) #创建文件夹(父目录不存在,报错)
    
    print(os.removedirs("/usr/hehe/hehe1")) #递归删除 空目录
    print(os.rmdir("test1")) #只能删除空文件夹
    
    print(os.remove("test"))  #只能删除文件
    
    print(os.listdir('f:\')) #列出一层目录下的所有文件,放在一个list里面
    os.rename("test","test1") #重命名
    print(os.stat("len_os.py"))#获取文件信息(文件大小、创建时间、修改时间等)
    print(os.sep) #当前操作系统的路径分隔符,windows下’e:xx’,linux下是‘/’,用于拼路径
    #day5+os.sep+xx.py  #不同平台下这样拼的路径都不会报错
    

    print(os.linesep) #当前操作系统的换行符(linux换行符是 ,windows是’ ’) print(os.pathsep) #当前系统的环境变量中每个路径的分隔符,linux是:,windows是; print(os.environ) #当前系统的环境变量 print(os.name) #当前系统名称 win系统打印的都是nt,mac打印的都是posix os.system('ipconfig') #执行操作系统命令的,但是不能获取到命令返回的结果 res = os.popen('ipconfig').read() #执行操作系统命令,可以获取到命令执行的结果(而且没有乱码)
    #print(res)
    res = os.popen('top -n 1').read() #如果是动态地命令,比如top,就获取不到结果,于是可以采集1s显示的静态结果 #print(res) print(__file__ ) #获取到当前文件的绝对路径(但是获取的路径分隔符不正确) #>>>F:/pyproject/day5/test2.py print(os.path.abspath(__file__)) #获取当前文件的绝对路径 #>>>F:pyprojectday5 est2.py print(os.path.split("/usr/hehe/hehe.txt")) #分割路径和文件名 #>>>('/usr/hehe', 'hehe.txt') print(os.path.dirname("e:\syz\ly-code")) #获取父目录,即获取它的上一级目录 #>>>e:syz print(os.path.basename("/usr/local")) #获取最后一级,如果是文件显示文件名,如果是目录显示目录名 print(os.path.exists("F:\pyproject\day6")) #判断目录/文件是否存在,返回True/False print(os.path.isabs("."))#判断是否是绝对路径 print(os.path.isfile("xiaohei.py")) #1、判断是否是一个文件,2、判断文件是否存在 print(os.path.isdir("/usr/local")) #是否是一个路径,同时判断目录是否存在 size = os.path.getsize('test.py') #获取文件的大小,比如:判断文件是否为空、判断上传的图片不能超过2M=1024kb=1024*1024Bytes print(size) print(os.path.join("root",'hehe','a.sql')) #自动拼接成一个路径(linux和windows能自动加分隔符) #>>> roothehea.sql print(os.path.getatime("len_os.py"))#输出最近访问时间 print(os.path.getmtime("len_os.py"))#输出最近访问时间

    os.walk()方法  #获取目录下的内容,遍历所有层级的文件夹

    import os
    for data in os.walk(r'F:pyproject	est'):
        print(data)
    # ('F:\pyproject\test', ['test1'], []) #第一层目录、所有文件夹、所有文件 # ('F:\pyproject\test\test1', ['test11'], []) #第二层目录、文件夹、文件 # ('F:\pyproject\test\test1\test11', [], ['列表.py'])

    for abs_path,dir,file in os.walk(r'F:pyproject est'): print(abs_path,dir,file) # abs_path:当前循环的绝对路径 # dir:目录下面所有的文件夹[ ] # file:文件夹下所有的文件
    # F:pyproject est ['test1'] [] # F:pyproject est est1 ['test11'] ['test1.txt'] # F:pyproject est est1 est11 [] ['列表.py']

     

    3、time模块

      时间的表达:

      1、时间戳:从unix元年到现在过了多少秒

      2、格式化好的时间

    import time
    print(time.time())  #获取当前时间戳 >>>1525275502.3039572
    time.sleep(10) #暂停10s
    today = time.strftime('%Y-%m-%d %H:%M:%S')   #获取当前格式化的时间  
    print(today)  #>>>2018-04-21 16:20:47
    
    # 时间戳和格式化时间相互转化的话,需要经过时间元组
    #时间元组
    print(time.gmtime())  #默认取的是标准时区的时间 >>>time.struct_time(tm_year=2018, tm_mon=5...)
    print(time.localtime())  #取的是当前时区的时间(比如,中国:东八区)
    print(time.timezone)  # 和标准时间相差的时间,单位是s
    
    #时间戳 转成 格式化时间
        #1、先把时间戳 转成 时间元组
        #2、再把时间元组 转 格式化时间
    s = time.localtime(1514198680)   #1.先把时间戳转成时间元组,没有返回值的
    print(time.strftime('%Y-%m-%d %H:%M:%S',s))  #2.再把时间元组转格式化时间 >>>2017-12-25 18:44:40
    
    
    #把格式化好的时间,转成时间戳
    tp = time.strptime("20160204 191919", "%Y%m%d %H%M%S") #1.把格式化好的时间转成时间元组,前后的格式要一致
    print(time.mktime(tp)) #2.把时间元组转成时间戳

     

    4、datetime模块

    import datetime
    print(datetime.datetime.today())  #获取当前的时间,精确到秒
    print(datetime.date.today())    #获取今天的时间,精确到天
    #print(datetime.datetime.now())  #获取当前的时间,精确到秒
    
    #获取5天后的时间
    res = datetime.date.today()+datetime.timedelta(days=5)
    print(res)
    
    #获取5天前的时间
    res = datetime.date.today()+datetime.timedelta(days=-5)
    print(res)
    
    #获取1天后,5分钟之后,5秒之后,5周之后的时间
    res = datetime.datetime.today()+datetime.timedelta(days=1,minutes=5,seconds=5,weeks=5)
    print(res)   #>>>2018-06-08 00:32:21.916808
    print(res.strftime('%Y-%m-%d'))  #直接输出格式化时间 >>>2018-06-08

     

    5、hashlib加密模块

    字符串加密:不能直接对字符串进行加密,先将字符串转成bytes(二进制)类型

    #md5加密是不可逆的,不能解密

    import hashlib
    m = hashlib.md5()
    #print(m.__doc__) #打印帮助文档
    passwd = 'qqq123'
    #print(passwd.encode())  #将字符串转成二进制类型 >>>b'qqq123'
    m.update(passwd.encode()) #不能直接对字符串进行加密,先将字符串转成bytes(二进制)类型
    print(m.hexdigest())  #>>>931bd0e1cc9baae10e9ff6ca7002e834

    【例】:封装一个md5加密的函数

    def my_md5(str):
        new_str = str.encode()  #把字符串转成bytes类型
        #new_str = b'%s'%str   #或者前面加b,转成bytes类型
        m = hashlib.md5()   #实例化md5对象
        m.update(new_str)   #加密
        return m.hexdigest() #获取返回结果

    #更多的加密方式,比如:

     hashlib.sha256()   #加密后的位数不同

     

     6、操作数据库:

    1、连上数据库:hostuserpasswdportdbcharset='utf8'

    2、建立游标   3、执行sql   4、获取结果

    5、关闭游标   6、连接关闭

    #注意:①port必须是int类型 ②charset必须写utf8

    ③其中delete update insert语句,必须commit,才能写到数据库

    import pymysql
    coon = pymysql.connect(
        host='118.24.3.40',user='jxz',passwd='123456',
        port=3306,db='jxz',  #port必须是int类型
        charset='utf8'   #charset必须写utf8(防止乱码)
    )
    cur = coon.cursor()   #建立游标
    cur.execute('insert into stu (id,name,sex) VALUE (1,"chl","女");')  #执行sql
    coon.commit() #其中delete update insert语句,必须commit,才能写到数据库
    cur.execute('select * from stu;')   #执行sql
    
    res = cur.fetchall()   #获取所有的返回结果,从数据库拿结果
    print(res)
    cur.close()   #关闭游标
    coon.close()  #关闭连接

    >>>((1, '张三', ''), (8, 'LYL', ''), (100, 'zhangli', ''))  #结果是二维数组

    【例】封装一个操作数据库的函数(以后用类来优化)

    def my_db(host,user,passwd,db,sql,port=3306,charset='utf8'):
        import pymysql
        coon = pymysql.connect(
            host = host,
            user = user,
            port = port,
            passwd = passwd,
            db = db,
            charset = charset
        )      #建立连接
        cur = coon.cursor()  #建立游标
        cur.execute(sql)     #执行sql
        if sql.strip()[:6].upper()=='SELECT':   #判断sql前几个字母是select,全部转成大写

    7、操作excel

    先装两个模块:pip install xlwt   pip install xlrd

    #写excel
    import xlwt
    book = xlwt.Workbook()  #新建一个excel
    sheet = book.add_sheet('sheet1')   #加一个sheet页
    sheet.write(0,0,'姓名')  #第1行、第1列,写入的内容
    sheet.write(0,1,'年龄')  #第1行,第2列
    sheet.write(0,2,'性别')  #第1行,第3列
    book.save('stu.xls')  #保存excel,结尾一定要用xls

     

    8、sys模块

    import sys
    print(sys.platform)  #判断操作系统 #>>>win32
    print(sys.path)  #查看当前使用的pyhtonz自己的环境变量
    
    sys.argv           #命令行参数List,第一个元素是程序本身路径
    sys.exit(n)        #退出程序,正常退出时exit(0)
    sys.version        #获取Python解释程序的版本信息
    sys.maxint         #最大的Int值
    sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    sys.platform       #返回操作系统平台名称
    sys.stdout.write('please:')#向屏幕输出一句话
    val = sys.stdin.readline()[:-1]#获取输入的值

    sys.argv:用来获取命令行里面运行的python的时候传入的参数

    #它是一个list,这个list默认就有一个参数,这个参数就是当前的文件名

    #如果用右键运行的话就只显示这个文件名的list

    import sys
    print(sys.argv)  #用来获取命令行里面运行的python的时候传入的参数
    
    >>> ['F:/pyproject/test2.py']

    #在命令行里面运行,可以用来获取python文件传入的参数

    【例】tools.py:运行python文件时,传入不同的参数,给出相应的提示

    import sys
    command = sys.argv  #默认长度=1,即当前文件名['F:/pyproject/test2.py']
    if len(command)>1:  #如果有参数传进来,长度大于1
        cmd1 = command[1] #第[0]个参数是文件名,第2个才是参数传入的命令
        #cmd2 = command[2]
        if cmd1=='--help':
            print('这是帮助文档'
                  '这个python文件时用来说明sys.argv的作用')
        elif cmd1=='os':
            print("当前的操作系统是%s" % sys.platform)
        else:
            print("输入命令有误")
    else:
        print("运行python文件的时候,要传入一个参数,比如 python xx.py install")

     

     9、string模块

    import string
    print(string.ascii_lowercase)  #所有的小写字母
    print(string.ascii_uppercase)  #所有的大写字母
    print(string.digits)           #所有的数字
    print(string.ascii_letters)    #所有的大写字母和小写字母
    print(string.punctuation)      #所有的特殊字符
    print(string.printable)      #代表所有的 数字+字母+特殊字符

     模块的安装:

      模块其实就是一个python文件

      1、标准模块、标准包:python自带的这些模块,直接import就能用

      import string,random,datetime,os,json

      2、第三方模块,别人写好的一些模块,需要安装之后才能用

        1)傻瓜式安装:pip install pymysql

          1、没有pip命令的怎么搞:

            1、pycharm里面点Tools-python console

            2、找到python安装目录

            3、然后把安装目录下的scripts目录,加入到环境变量里面即可

        ps:环境变量在PATH里面加 D:installpython3Scripts

        2、提示Unknown or unsupported command 'install'怎么解决:

          1、打开    C:strawberryperlin

          2、把这个目录下的pip 都改成其他的名字,这个对其他的没有影响

      2)手工安装

      ①安装以.whl结尾的包  比如:redis-2.10.6-py2.py3-none-any.whl

      下载redis到某个文件夹,

      shift+右键,“在此处打开命令窗口”或者在地址栏输入cmd,

      输入命令安装:F:pyprojectmodel>pip install redis-2.10.6-py2.py3-none-any.whl

      ②安装以.tar.gz的包  

      先解压,然后进入到“在此处打开命令窗口”,

      输入命令>>>python setup.py install xpinyin.tar.gz 安装

     3、自己写的python文件

    【例】生成密码

    1、输入多少就生成多少条

    2、密码必须包含大写字母、小写字母、数字、特殊字符

    3、密码长度6-11位

    4、密码不能重复

    import string,random
    pwd_len = input('请输入你要产生多少条密码:').strip()
    pwds = set() #存放所有的密码
    if pwd_len.isdigit():
        pwd_len = int(pwd_len)
        while len(pwds)!=pwd_len:
            num=random.choice(string.digits)  #取一位数字
            letter = random.choice(string.ascii_lowercase) #取一位小写字母
            upper = random.choice(string.ascii_uppercase)  #取一位大写字母
            pun = random.choice(string.punctuation) #取一位特殊字符
            pasd_len = random.randint(6,11) #代表随机生成密码的长度
            other_len = pasd_len - 4 #各取1位数字、大写字母、小写字母、特殊字符后,剩余的长度
            all_strs = string.digits+string.ascii_letters+string.punctuation #所有的字母、数字、特殊字符
            other_passwd = random.sample(all_strs,other_len)#随机取到剩下的密码
            pwd_list = [num,letter,upper,pun]+other_passwd  #产生密码之后的list
            random.shuffle(pwd_list)#顺序打乱
            pwd_str = ''.join(pwd_list) #最终的密码
            print(pwd_str)
            pwds.add(pwd_str+'
    ')
        else:
            open('passwds.txt','w').writelines(pwds)
    else:
        print('条数必须是整数!')

    1

  • 相关阅读:
    蛤玮学计网 -- 简单的判断ip
    修路方案 Kruskal 之 次小生成树
    单词拼接 ----- 深搜
    KMP 算法
    城市平乱 ---- Dijkstra
    最少换乘
    ubuntu-vnc
    sshpass----------------sshfs--sftp(sublime)
    snmp ubuntu/centos--
    erlang ssl
  • 原文地址:https://www.cnblogs.com/chenhongl/p/8989668.html
Copyright © 2011-2022 走看看