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

  • 相关阅读:
    leetcode 86. Partition List
    leetcode 303. Range Sum Query
    leetcode 1310. XOR Queries of a Subarray
    leetcode 1309. Decrypt String from Alphabet to Integer Mapping
    leetcode 215. Kth Largest Element in an Array
    将numpy.ndarray写入excel
    leetcode 1021 Remove Outermost Parentheses
    leetcode 1306. Jump Game III
    leetcode 1305. All Elements in Two Binary Search Trees
    ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution
  • 原文地址:https://www.cnblogs.com/chenhongl/p/8989668.html
Copyright © 2011-2022 走看看