zoukankan      html  css  js  c++  java
  • Python学习笔记十二_常用模块

    一、os

    import os #对操作系统的一些操作
    print(os.getcwd())#取当前工作目录
    os.chmod('/usr/local',7)#给linux文件/目录加权限,对windows下不好使,1执行 2写 4读
    os.chdir('../')#更改当前目录(回到上一级目录),没有返回值
    print(os.curdir)#当前目录, .
    print(os.pardir)#父目录, ..
    os.makedirs('aa/bb')#递归创建文件夹,父目录不存在时创建,文件夹已存在时,无法创建
    os.mkdir('cc')#创建文件夹,文件夹已存在时,无法创建
    os.removedirs('aa/bb')#递归删除空目录
    os.rmdir('cc')#删除指定的空文件夹
    os.remove('temp.py')#删除文件
    print(os.listdir())#列出当前目录下的所有文件及文件夹
    print(os.listdir('d:/'))#列出d盘的所有文件
    os.rename('test','test1')#重命名
    print(os.stat('tmp.py'))#获取文件信息
    print(os.sep)#当前操作系统的路径分隔符,win:\,linux:/
    # day5+os.sep+tmp.py 用os.sep拼接路径,提高系统兼容性
    print(os.linesep)#当前操作系统的换行符,
     
    
    print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
    print(os.environ)#当前系统的环境变量
    print(os.name)#当前系统名称,Windows系统都是nt linux都是posix,用来判断当前是什么系统
    print(os.system('dir'))#执行操作系统命令的,查看当前目录下有什么内容dir,用来执行linux下备份
    res = os.system('dir')#不能获取到命令执行结果,返回0代表命令执行成功,用来创建文件夹等不需要返回结果的命令
    res = os.popen('ifconfig').read()#可以获取到命令执行的结果
    os.open('top').read() #无法执行,因为top命令执行结果一直在动态变化
    os.popen('top -n 1').read() #只取一次,可以获得结果
    print(os.path.abspath('.'))#获取绝对路径
    print(__file__) # 获取到当前文件的绝对路径,但路径分隔符不对
    print(os.path.abspath(__file__))# 获取到当前文件的绝对路径
    print(os.path.split('/usr/hehe/hehe.txt'))#分割路径和文件名,取list[1]就直接可以取出文件名
    print(os.path.dirname('d:\work'))#获取父目录,获取它的上一级目录,d:
    print(os.path.basename('d:\work'))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名,work
    print(os.path.exists('d:\work'))#目录/文件是否存在,True
    print(os.path.isabs('d:\work'))#判断是否是绝对路径,True
    print(os.path.isfile('tmp.py'))#判断是否是一个文件,1、文件要存在2、必须是一个文件
    print(os.path.isdir('d:\work'))#是否是一个路径,目录是否存在,True
    print(os.path.getsize('tmp.py'))#获取文件的大小,返回的是字节,可以用来限制文件上传大小
    print(os.path.join('root','db','a.sql'))#拼接成一个路径,,分隔符会自动识别,与os.sep的一致更智能,rootdba.sql
    print(os.path.getatime('tmp.py'))#输出最近访问时间
    print(os.path.getmtime('tmp.py'))#输出最近访问时间

     os.walk是一个非常强大的方法,可以将文件夹下的子文件夹里的文件遍历出来

    os.walk返回的是一个二维数组,数组每个元素都包含绝对路径、文件夹、文件三个元素,可以用三个变量来循环 

    for data in os.walk(r'd:workspacepythonsyz-dongruiDay6'):
        print(data)
    for abs_path,dir,file in os.walk(r'd:workspacepythonsyz-dongruiDay6'):#获取目录下内容
        # 路径前面加个r,不会把/n等转义
        # os.listdir()列出当前目录下的所有文件,os.walk会遍历子文件夹找到所有文件
        print(abs_path,dir,file)
        # abs_path 当前循环的绝对路径
        # dir 目录下面所有的文件夹 [ ]
        #  file 目录下面的所有文件  []

    小练习:

    在log文件夹下批量新增子文件夹及文件 

    import os,datetime
    dirs = ['android','apache','app','ios','nginx','python','tomcat']
    os.chdir(r'D:workspacepythonsyz-dongruiDay6logs')
    base_path = r'D:workspacepythonsyz-dongruiDay6logs'
    for d in dirs:
        path = os.path.join(base_path,d)
        os.mkdir(path)
        os.chdir(path)
        for i in range(10):
            t = datetime.date.today()-datetime.timedelta(days=i)
            filename = '%s-%s.log'%(d,t)
            open(filename,'w')

    把双数日期的日志,里面随便写点东西

    import os
    for abs_path,dir,file in os.walk('D:workspacepythonsyz-dongruiDay6logs'):
    #获取到log目录下面的所有文件
        for f in file:
            day = f.split('.')[0].split('-')[-1]#取出文件的日期
            if int(day)%2==0:
                filename = os.path.join(abs_path,f)#拼接绝对路径
                open(filename,'a+',encoding='utf-8').write('写入双数日期日志')

    二、sys

    import sys
    print(sys.platform) #判断操作系统,win32
    print(sys.path) #python的环境变量
    sys.path.append('../day5_函数')#添加环境变量
    sys.path.insert(0,r'../day5_函数') #比append效率高,可以不去找其他环境变量了
    print(sys.argv) #用来获取命令行里面运行python文件的时候传入的参数
    # 它是一个list,list默认就有一个元素,就是当前的这个文件名
    sys.exit(n) #退出程序,正常退出时exit(0)
    print(sys.version) #获取Python解释程序的版本信息
    sys.stdout.write('please:')#向屏幕输出一句话
    val = sys.stdin.readline()[:-1]#获取输入的值

    下面写个小工具tools.py来说明sys.argv的作用

      (1) 用来获取命令行里面运行python文件的时候传入的参数
      (2) 它是一个list
      (3) 这个list默认就有一个参数,就是当前的这个文件名

    import sys
    command = sys.argv
    print(command) #['tools.py', '--help']
    if len(command) > 1:
        cmd1 = command[1]
        if cmd1 == '--help':
            print('这个是帮助文档'
                  '这个python文件是用来说明sys.argv的作用')
        elif cmd1 == 'os':
            print('当前的操作系统是%s'%sys.platform)
    else:
        print('运行python的时候要传入一个参数'
              'e.g python xx.py install')

    在当前目录下运行命令行,或者在pycharm中打开Terminal

    输入python tools.py --help,即打印“这个是帮助文档这个python文件是用来说明sys.argv的作用”

    三、random

    import random
    print(random.randint(1,10))#随机取整数
    print(random.randrange(1,20))#随机产生一个range
    print(random.random())#随机浮点数,默认取0-1,不能指定范围
    print(random.uniform(1,3))#随机小数,可以指定范围
    print(round(random.uniform(1,99),2))#随机小数,保留小数点后两位
    print(random.choice([1,2,3]))#随机取1个元素
    print(random.sample('hello',3))#随机取N个元素,返回的是list
    pickts = ['A','J','Q','K',2,3,4,5,6]
    random.shuffle(pickts)#洗牌只能传list
    print(pickts)#['Q', 'A', 2, 6, 3, 4, 5, 'K', 'J']

    四、string

    import string
    print(string.ascii_letters)#所有大小写字母
    print(string.ascii_lowercase)#所有小写字母
    print(string.ascii_uppercase)#所有大写字母
    print(string.digits)#所有数字
    print(string.punctuation)#所有特殊标点符号
    print(string.printable)#数字+字母+特殊字符

    五、time & datetime

    1、time

    时间有三种表示方式,一种是时间戳、一种是格式化时间、一种是时间元组

    import time
    print(time.timezone)#和标准时间相差的时间,单位是s,东八区-28800
    print(time.time())#获取当前时间戳
    time.sleep(10) #休息10s
    print(time.gmtime())#把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳,东八区tm_hour需要+8
    print(time.localtime())#把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳
    print(time.strftime('%Y-%m-%d %H:%M:%S'))#将时间元组转换成格式化输出的字符串,默认输出当前时间
    # strftime后面两个参数,第一个是输出格式,第二个是时间元组,第二个不填就为当前时间
    print(time.strptime('2018-04-21','%Y-%m-%d'))#把格式化好的时间转成时间元组
    print(time.mktime(time.localtime()))#把时间元组转换成时间戳
    time.struct_time#时间元组
    print(time.asctime())#时间元转换成格式化时间
    print(time.ctime())#时间戳转换成格式化时间

    时间戳与格式化好的时间可以通过时间元组来转换

      (1) 时间戳->时间元组->格式化的时间

    import time
    def timestamp2format(timestamp = None,format='%Y-%m-%d %H:%M:%S'):
        if timestamp:#若传入时间戳,把时间戳转化成格式化好的时间,返回
            time_tuple = time.localtime(timestamp)#将时间戳转换为时间元组
            res = time.strftime(format,time_tuple)#将时间元组格式化输出
        else:
            res = time.strftime(format) #默认返回当前格式化好的时间
        return res
    print(timestamp2format())#2018-04-28 18:17:17
    print(timestamp2format(1524828157,'%Y-%m-%d'))#2018-04-27

      (2) 格式化的时间->时间元组->时间戳

    import time
    def format2timestamp(str= None,format = '%Y-%m-%d'):
        if str:#若传入格式化时间,把格式化时间转为时间戳,返回
            time_tuple = time.strptime(str,format)#把格式化时间转为时间元组
            res = time.mktime(time_tuple)#将时间元组转化为时间戳
        else:
            res = time.time()#默认返回当前时间戳
        return int(res)
    print(format2timestamp())#1524910637
    print(format2timestamp('2018-4-29',))#1524931200

    2、datetime

    import datetime
    print(datetime.datetime.today())#获取当前时间,精确到秒
    print(datetime.date.today())#精确到天
    print(datetime.datetime.now())#当然时间格式化输出
    res = datetime.date.today() - datetime.timedelta(days=5)#5天前的时间
    res1 = datetime.datetime.today()-datetime.timedelta(days=5,minutes=-5,seconds=3,weeks=2)
    print(res)
    print(res1.strftime('%Y-%m-%d'))

    六、hashlib

    hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

    import hashlib
    m = hashlib.md5()#实例化md5对象,bytes
    m.update('hello'.encode())#不能直接对字符串加密,要先把字符串转成bytes类型
    print(m.hexdigest())#md5加密是不可逆,16进制格式hash
    print(m.digest())#2进制格式hash
    
    hash = hashlib.sha1()
    hash = hashlib.sha256()
    hash = hashlib.sha384()
    hash = hashlib.sha512()
    hash.update(b'hello')
    print(hash.digest)

    七、json(详见学习笔记九)

    import json    
    dic = {"name":"Amy","age":18}
    print(json.dumps(dic))#把字典转成json串,需要额外写文件
    fj = open('a.json','w') 
    print(json.dump(dic,fj))#把字典转换成的json串写到一个文件里面
    s_json = '{"name":"Amy","age":20,"status":true}'
    print(json.loads(s_json))#把json串转换成字典,需要先读文件
    fr = open('b.json','r')
    print(json.load(fr))#从文件中读取json数据,然后转成字典
  • 相关阅读:
    Linux基礎命令
    Linux_文件系統結構
    Linux_目錄結構與操作_基本命令
    JS简单打字小游戏demo
    开发板通过路由器访问外网
    VIM基本操作命令表
    破解source insight4.0
    进程控制
    静态库与动态库的制作和使用
    STM32建工程模板
  • 原文地址:https://www.cnblogs.com/dongrui624/p/8950522.html
Copyright © 2011-2022 走看看