模块,其实就是一个python文件。

标准模块: 是指python自带的这些模块,直接import 就能用的。例如string ,random, datetime, os ,json, sys

1)string 模块  (参看新手学习python(三)字符串方法)

 

2)random 随机模块(生成随机数相关的函数)

import random    
random.random()    #随机生成(0,1)的浮点数
random.randint(1000,9999)   #随机生成1000-9999之间的整数
random.randrange(0,21,2)    #随机生成1-21之间的偶数
random.uniform(0,20)     #随机生成0,20之间的浮点数
random.choice(['a','b','c','d'])   #从列表中随机选一个元素
random.shuffle([1,2,3,4,5])    #对列表元素随机排序
random.sample('abcdefg',2)    #从指定序列中随机获取指定长度的片段

 

3)datetime & time 时间模块

关于time,要了解两个概念:1、时间戳:从unix元年到现在过了多少秒; 2、格式化好的时间,例如 20180523102323 年月日时分秒

3.时间元祖 :time.struct_time(tm_year=2016,  tm_mon=7, tm_mday=21,  tm_hour=22,  tm_min=32, tm_sec=51,   tm_wday=3,  tm_yday=203, tm_isdst=0)  #后三个参数的含义:一周的第几日,一年的第几天,夏令时

time.time()   #获取当前时间戳

time.sleep(10)    #停顿10秒

time.strftime('%Y-%m-%d %H:%M:%S')   #取当前格式化好的时间。格式可变化

time.gmtime()   #默认取的是标准时区的时间

time.localtime()   #取的当前时区的时间

---时间戳和格式化的时间的相互转换

1.定义一个函数,传入时间戳的话,把时间戳转化成格式化好的时间,返回;默认返回当前格式化好的时间

def timestamp_to_fomat(time=None,format='%Y-%m-%d %H-%M-%S'):    #format格式可变化
    if timestamp:
        time_tuple=time.localtime(timestamp)     #时间戳先转成时间元祖
        res=time.strftime(format,time_tuple)     #时间元祖转成格式化好的时间
   else:

        res=time.strftime(format)   #默认取当前时间

    return res 

2.定义一个函数,传入格式化好的时间,返回时间戳;默认返回当前时间戳

def strToTimestamp(str=None,format='%Y%m%d%H%M%S'):
    if str:
        tp=time.strptime(str,format)    #先转换成时间元祖
        res=time.mktime(tp)     #再转换成时间戳
    else:
        res=time.time()   #默认取当前的时间戳
    return int(res)
 ---------------

datetime.datetime.today()   #获取当前时间,精确到秒

datetime.date.today()     #精确到天

datetime.timedelta(-5)   #5天前的时间,还可以minutes=5 ,5分钟后;seconds=5,5秒后;weeks=4 ,4周后

 

4)os模块,对操作系统的一些操作

os.getcwd()    #取当前工作目录
os.chmod('D:/python自动化/day6常用模块/x.py',2)   #给文件,目录加权限,对windows不好使,操作linux可用
                                                #r4,w2,x1,即4是读,2是写,1是执行
os.chdir('../')   #更改当前目录,更改到上一级目录
os.makedirs('tanzhen\\aaa')   #递归创建文件夹,父目录不存在会自动帮忙创建父目录
os.mkdir('test1')  #创建文件夹,如果父目录不存在会报错
os.removedirs('tanzhen\\aaa')  #递归删除空目录
os.rmdir('test1')   #删除指定的文件夹,只能删除空目录
os.remove(test)     #删除文件
os.listdir('.')     #列出一个目录下的所有文件 .代表当前路径
os.rename('aaa.txt','bbb.txt')  #给文件重命名
os.stat('bbb.txt')  #获取文件信息
os.sep      #当前操作系统的路径分隔符,可用于拼路径,适用于多平台转换
os.linesep      #当前操作系统的换行符
os.pathsep      #当前系统的环境变量中的每个路径的分隔符
os.environ      #当前系统的环境变量
os.name         #当前操作系统,windows打印nt,linux打印posix

res=os.system('ipconfig')         #执行操作系统命令,但是获取不到结果
res=os.popen('ipconfig').read()   #可以获取到命令执行的结果
print(res)

os.path.abspath('.')         #获取绝对路径, (.代表当前路径)
os.path.abspath(__file__)    #取当前文件的绝对路径,前后都是双下划线
os.path.split('d:\python自动化\\byz-code\day6\\bbb.txt')   #分割路径和文件名
os.path.dirname('d:\python自动化\\byz-code')    #获取父目录,也就是获取它的上一级目录
os.path.basename('d:\python自动化\\byz-code\\bbb.txt')     #获取绝对路径的最后一级,如果是文件显示文件名
os.path.exists("d:\python自动化\\byz-code\day6\\bbb.txt")  #判断目录文件是否存在
os.path.isfile('bbb.txt')      #判断是否是一个文件,1.文件要存在,2必须是一个文件
os.path.isdir('e:/rere/rere')  #是否是一个路径,目录是否存在
size=os.path.getsize('bbb.txt')   #获取文件的大小,不能超过2M
print(size)
os.path.join('root','hehe','mysql','a.sql')  #拼接成一个路径
for abs_path,dir,file in os.walk('D:\python自动化\\byz-code\day6'):  #递归循环
     print(abs_path,dir,file)
#abs_path  当前循环的绝对路径 ,dir目录下面的所有文件夹[], file目录下面的所有文件[]

5)json模块,json串是一个字符串

json.loads()     #把json串,变成python的数据类型
f = open('product.json',encoding='utf-8')
json.load(f)      #传一个文件,他会帮你读文件
d={
'zhangsan':{'addr':'北京','age':28},
'lisi':{'addr':'上海','age':38}
      }
json.dumps(d,ensure_ascii=False,inden=4)    #字典转成json,字典转成字符串
json.dump(d,fw,ensure_ascii=False,indent=10)    #操作文件

 

6)sys模块

sys.platfor)  #判断操作系统
sys.path  #python的环境变量

sys.path.append('../day5')  #(..代表上一级目录)把目录加入到环境变量里,再导入模块,就可使用该模块
sys.path.insert(0,r'd:\python自动化\byz-code\day5')  #加到环境变量首个文件内

# import my_random    #day5目录下的一个ptyhon文件
sys.argv              #来获取命令行里面运行python文件  (文件名不要用中文)

=====小练习======
1、写一个生成双色球号码的一个程序,生成的号码写到文件里面
    # 中奖号码由6个红色球号码和1个蓝色球号码组成
    # 篮球范围:01-16
    # 红球范围:01-33

import random,json,string

def select(start,end,num):    #生成一组蓝球和红球的函数
    a_list=[]
    while len(a_list) !=num:
        a=random.randint(start,end)
        a=str(a).zfill(2)                    #取出来的数字补齐2位
        if a not in a_list:
            a_list.append(a)
    return a_list

def write(content):     #写入文件的函数
    with open('ticket.txt', 'w', encoding='utf-8') as f:  # 把生成的双色球号码全部写入文件
        content_json=json.dumps(content,ensure_ascii=False,indent=4)
        f.write(content_json)

def main():
    tickets = {}
    num=input('请输入双色球投注数量:').strip()
    i=1
    if num.isdigit():
        while len(tickets)!=int(num):
            red_ticket=str(select(1,33,6))
            blue_ticket=str(select(1,16,1))
            if red_ticket not in tickets.values() and blue_ticket not in tickets.values():
                tickets[i]={'红球号码':red_ticket,'蓝球号码':blue_ticket,}
                i +=1
        write(tickets)
    else:
        print('请输入数字。')

main()

------
2、把双数日期的日志,里面随便写点东西
思路:1.获取log目录下面的所有文件 os.walk
     2.根据文件名来判断,是否双数日期,分割字符串,取到日期
     3.跟2%==0
     4.打开这个文件 open()

import os
for abs_path,dir,file in os.walk(r'D:\python自动化\byz-code\day6\logs'):
    #print(file)
    for f in file:       #file是存放的文件名
        day=f.split('.')[0].split('-')[-1]    #循环文件名,对文件名进行分割,获取文件名最后日期
        #print(day)
        if int(day)%2==0:
            file_name=os.path.join(abs_path,f)  #拼接绝对路径
            print(file_name)
            open(file_name,'a+',encoding='utf-8').write('aaaaa')   #没有给文件赋值,不用关闭文件