chenhongl

导航

 

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换行符是\n,windows是’\r\n’) 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:\pyproject\day5\test2.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能自动加分隔符) #>>> root\hehe\a.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\test'):
    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\test'): print(abs_path,dir,file) # abs_path:当前循环的绝对路径 # dir:目录下面所有的文件夹[ ] # file:文件夹下所有的文件
# F:\pyproject\test ['test1'] [] # F:\pyproject\test\test1 ['test11'] ['test1.txt'] # F:\pyproject\test\test1\test11 [] ['列表.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:\install\python3\Scripts

 

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

 

      1、打开    C:\strawberry\perl\bin\

 

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

 

  2)手工安装

 

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

 

  下载redis到某个文件夹,

 

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

 

  输入命令安装:F:\pyproject\model>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+'\n')
    else:
        open('passwds.txt','w').writelines(pwds)
else:
    print('条数必须是整数!')

1

 

posted on 2018-05-04 11:11  chenhongl  阅读(274)  评论(0编辑  收藏  举报