zoukankan      html  css  js  c++  java
  • python内置模块[sys,os,os.path,stat]

    内置模块是python自带功能,在使用内置模块时,需要遵循 先导入使用

    一、sys

    对象描述
    sys.argv命令行参数获取,返回类型为列表,第一个元素为程序的本身的路径
    sys.path返回模块的搜索路径列表,第一个元素为当前程序所在目录;初始化时使用PYTHONPATH环境变量的值
    sys.modules.keys()返回所有已经导入的模块列表
    sys.modules返回所有已经导入的模块字典,key模块名,value是模块路径
    sys.exc_info()获取当前正在处理的异常类,exc_type,exc_value,exc_traceback当前处理的异常详细信息
    sys.exc_clear()用来清除当前线程所出现的当前的或最近的错误信息
    sys.exec_prefix返回python文件安装的位置
    sys.exit(n)退出程序,正常退出时exit(0)
    sys.hexversion获取python解释程序的版本值,16进制格式如:0x020103F0
    sys.version获取python解释程序的版本信息
    sys.displayhook(value)如果value非空,这个函数会把他输出到sys.stdout(详细使用参考文档)
    sys.excepthook异常回溯相关
    sys.stdin标准输入
    sys.stdin.read()输入一行
    sys.stdin.readline()从标准输入读一行,sys.stdout.write("a") 屏幕输出a
    sys.stdout标准输出
    sys.stdout.write(‘aaa’)标准输出内容
    sys.stdout.writelines()无换行输出
    sys.stderr错误相关
    sys.pathform返回操作系统平台名称
    sys.byteorder本地字节规则的指示器,big-endian平台的值是’big’,little-endian平台的值是’little’
    sys.copyright记录python版权相关的东西
    sys.api_version解释器的C的API版本
    sys.version_info'final'表示最终,也有'candidate'表示候选,表示版本级别,是否有后继的发行
    sys.getdefaultencoding()返回当前你所用的默认的字符编码格式
    sys.getfilesystemencoding()返回将Unicode文件名转换成系统文件名的编码的名字
    sys.builtin_module_namesPython解释器导入的内建模块列表
    sys.executablePython解释程序路径
    sys.getwindowsversion()获取Windows的版本
      

    二、os模块

    对象描述
    os.remove()删除文件
    os.unlink()删除文件
    os.rename()重命名文件
    os.listdir()列出指定目录下所有文件
    os.curdir返回当前目录: ('.')
    os.pardir获取当前目录的父目录字符串名:('..')
    os.chdir()改变当前工作目录
    os.getcwd()获取当前文件路径
    os.mkdir()新建目录
    os.rmdir()删除空目录(删除非空目录, 使用shutil.rmtree())
    os.makedirs()创建多级目录
    os.removedirs()删除多级目录
    os.stat(file)获取文件属性
    os.chmod(file)修改文件权限
    os.utime(file)修改文件时间戳
    os.name获取操作系统标识,字符串指示当前使用平台。win->'nt'; Linux->'posix'
    os.sep操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    os.linesep当前平台使用的行终止符,win下为" ",Linux下为" "
    os.pathsep用于分割文件路径的字符串
    os.environ获取系统环境变量
    os.system()执行操作系统命令
    os.execvp()启动一个新进程
    os.access(path, mode)判断文件权限
    os.wait()等待任何一个子进程结束,返回一个tuple,包括子进程的进程ID和退出状态信息

    三、os.path模块

    os.path.getctime()返回文件创返回文件大小 字节单位建时间 浮点型os.path.getsize()

    对象描述
    os.path.split(filename)将文件路径和文件名分割(会将最后一个目录作为文件名而分离)
    os.path.splitext(filename)将文件路径和文件扩展名分割成一个元组
    os.path.dirname(filename)返回文件路径的目录部分
    os.path.basename(filename)返回文件路径的文件名部分
    os.path.join(dirname,basename)将文件路径和文件名凑成完整文件路径
    os.path.abspath(name)获得绝对路径
    os.path.splitunc(path)把路径分割为挂载点和文件名
    os.path.normpath(path)规范path字符串形式
    os.path.exists()判断文件或目录是否存在
    os.path.isabs()如果path是绝对路径,返回True
    os.path.realpath(path)返回path的真实路径
    os.path.relpath(path[, start])从start开始计算相对路径
    os.path.normcase(path)转换path的大小写和斜杠
    os.path.isdir(name)判断name是不是一个目录,name不是目录就返回false
    os.path.isfile(name)判断name是不是一个文件,不存在返回false
    os.path.islink()判断文件是否连接文件,返回boolean
    os.path.ismount()指定路径是否存在且为一个挂载点,返回boolean
    os.path.samefile()是否相同路径的文件,返回boolean
    os.path.getatime()返回最近访问时间 浮点型
    os.path.getmtime()返回上一次修改时间 浮点型
    os.path.getctime()返回文件创建时间 浮点型
    os.path.getsize()返回文件大小 字节单位
    os.path.commonprefix(list)返回list(多个路径)中,所有path共有的最长的路径
    os.path.lexists路径存在则返回True,路径损坏也返回True
    os.path.expanduser(path)把path中包含的"~"和"~user"转换成用户目录
    os.path.expandvars(path)根据环境变量的值替换path中包含的”$name”和”${name}”
    os.path.sameopenfile(fp1, fp2)判断fp1和fp2是否指向同一文件
    os.path.samestat(stat1, stat2)判断stat tuple stat1和stat2是否指向同一个文件
    os.path.splitdrive(path)一般用在windows下,返回驱动器名和路径组成的元组
    os.path.walk(path, visit, arg)遍历path,给每个path执行一个函数详细见手册
    os.path.supports_unicode_filenames设置是否支持unicode路径名

    四、stat模块:描述os.stat()返回的文件属性列表中各值的意义

    对象描述
    fileStats = os.stat(path)获取到的文件属性列表
    fileStats[stat.ST_MODE]获取文件的模式
    fileStats[stat.ST_SIZE]文件大小
    fileStats[stat.ST_MTIME]文件最后修改时间
    fileStats[stat.ST_ATIME]文件最后访问时间
    fileStats[stat.ST_CTIME]文件创建时间
    stat.S_ISDIR(fileStats[stat.ST_MODE])是否目录
    stat.S_ISREG(fileStats[stat.ST_MODE])是否一般文件
    stat.S_ISLNK(fileStats[stat.ST_MODE])是否连接文件
    stat.S_ISSOCK(fileStats[stat.ST_MODE])是否COCK文件
    stat.S_ISFIFO(fileStats[stat.ST_MODE])是否命名管道
    stat.S_ISBLK(fileStats[stat.ST_MODE])是否块设备
    stat.S_ISCHR(fileStats[stat.ST_MODE])是否字符设置

    五、hashlib:

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

    复制代码
    >>> import hashlib
    ####### md5 #######
    >>> hash.update(bytes('admin',encoding='utf-8'))
    >>> print(hash.hexdigest())
    21232f297a57a5a743894a0e4a801fc3
    >>> print(hash.digest())
    b'!#/)zWxa5xa7Cx89Jx0eJx80x1fxc3'
    ####### sha1 #######
    >>> hash = hashlib.sha1()
    >>> hash.update(bytes('admin',encoding='utf-8'))
    >>> print(hash.hexdigest())
    d033e22ae348aeb5660fc2140aec35850c4da997
    >>> print(hash.digest())
    b'xd03xe2*xe3Hxaexb5fx0fxc2x14
    xec5x85x0cMxa9x97'
    ####### sha256 #######
    >>> hash = hashlib.sha256()
    >>> hash.update(bytes('admin',encoding='utf-8'))
    >>> print(hash.hexdigest())
    8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
    >>> print(hash.digest())
    b'x8civxe5xb5Ax04x15xbdxe9x08xbdMxeex15xdfxb1gxa9xc8sxfcKxb8xa8x1fo*xb4Hxa9x18'
    ####### sha384 #######
    >>> hash = hashlib.sha384()
    >>> hash.update(bytes('admin',encoding='utf-8'))
    >>> print(hash.hexdigest())
    9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2
    ec9f10290cdc0782
    >>> print(hash.digest())
    b'x9cxa6x94xa9x02x85xc04C,x95PBx1b{x9dxbd\x0fKfsxf0_mxbcxe5x80Rxba xe4$x80Ax95nxe8xc9xa2xecx9fx10)x0cxdcx07x82'
    ####### sha512 #######
    >>> hash = hashlib.sha512()
    >>> hash.update(bytes('admin',encoding='utf-8'))
    >>> print(hash.hexdigest())
    c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec
    >>> print(hash.digest())
    b'xc7xadDxcbxadv*]xa0xa4Rxf9xe8Txfdxc1xe0xe7xa5*8x01_#xf3xeaxb1xd8x0bx93x1dxd4rcMxfaxc7x1cxd3Nxbc5xd1jxb7xfbx8ax90xc8x1fx97Qx13xd6xc7Sx8dxc6x9dxd8xdex90wxec'
    复制代码

    以上加密算法虽然非常厉害,但存在缺陷,即:通过密码库可以反解.所以,有必要对加密算法中添加自定义key再来做加密.

    复制代码
    >>> import hashlib
    >>> hash = hashlib.md5(bytes('89oaFs09f',encoding='utf-8'))
    >>> hash.update(bytes('admin',encoding='utf-8'))
    >>> print(hash.hexdigest())
    0f102151d38af213af2d4f73d459d69c
    >>> print(hash.digest())
    b'x0fx10!Qxd3x8axf2x13xaf-Osxd4Yxd6x9c'
    复制代码

    python内置还有一个hmac模块,它内部对我们创建key和内容进行进一步的处理,然后再加密

    复制代码
    >>> import hmac
    >>> h = hmac.new(bytes('898oaFs09f',encoding='utf-8'))
    >>> h.update(bytes('admin',encoding='utf-8'))
    >>> print(h.hexdigest())
    17186c513df61e8b3fb4a134f474b130
    >>> print(h.digest())
    b'x17x18lQ=xf6x1ex8b?xb4xa14xf4txb10'
    复制代码

    六、random模块:

    对象描述
    random.random()产生0-1的随机浮点数
    random.uniform(a, b)产生指定范围内的随机浮点数
    random.randint(a, b)产生指定范围内的随机整数
    random.randrange([start], stop[, step])从一个指定步长的集合中产生随机数
    random.choice(sequence)从序列中产生一个随机数
    random.shuffle(x[, random])将一个列表中的元素打乱
    random.sample(sequence, k)从序列中随机获取指定长度的片断
    复制代码
    import random
    checkcode = ''
    for i in range(4):
        current = random.randrange(0,4)
        if current != i:
            temp = chr(random.randint(65,90))
        else:
            temp = random.randint(0,9)
        checkcode += str(temp)
    print(checkcode)
     
    随机验证码
    复制代码

    七、time&datetime&date模块

    datetime.date.today()本地日期对象,(用str函数可得到它的字面表示('2016-12-24'))
    datetime.date.isoformat(obj)当前[年-月-日]字符串表示('2016-12-24')
    datetime.date.fromtimestamp()返回一个日期对象,参数是时间戳,返回 [年-月-日]
    datetime.date.weekday(obj)返回一个日期对象的星期数,周一是0
    datetime.date.isoweekday(obj)返回一个日期对象的星期数,周一是1
    datetime.date.isocalendar(obj) 把日期对象返回一个带有年周星期的元组
    datetime.datetime.today()返回一个包含本地时间(含微秒数)的datetime对象,如datetime.datetime(2016, 12, 24, 11, 1, 59, 365506)
    datetime.datetime.now()返回指定时区的datetime对象,datetime.datetime(2016, 12, 24, 11, 2, 50, 132996)
    datetime.datetime.utcnow()返回一个零时区的datetime对象
    datetime.utcfromtimestamp(timestamp)按时间戳返回一个UTC-datetime对象
    datetime.datetime.strptime('2014-03-16 12:21:21',"%Y-%m-%d %H:%M:%S")将字符串转为datetime对象,datetime.datetime.strptime('2016-01-01 12:11:12','%Y-%m-%d %X')
    datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d  %H:%M:%S')将datetime对象转换为str表示形式
    datetime.date.today().timetuple()转换为时间戳datetime元组对象,可用于转换时间戳
    datetime.datetime.now().timetuple()转换为时间戳datetime元组对象,可用于转换时间戳
    time.mktime(timetupleobj)将datetime元组对象转为时间戳
    time.time()当前时间戳
    time.localtime当前时间对象
    time.gmtime当前UTC时间对象
    复制代码
    #_*_coding:utf-8_*_
    __author__ = 'Alex Li'
    
    import time
    
    
    # print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来
    # print(time.altzone)  #返回与utc时间的时间差,以秒计算
    # print(time.asctime()) #返回时间格式"Fri Aug 19 11:14:16 2016",
    # print(time.localtime()) #返回本地时间 的struct time对象格式
    # print(time.gmtime(time.time()-800000)) #返回utc时间的struc时间对象格式
    
    # print(time.asctime(time.localtime())) #返回时间格式"Fri Aug 19 11:14:16 2016",
    #print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上
    
    
    
    # 日期字符串 转成  时间戳
    # string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #将 日期字符串 转成 struct时间对象格式
    # print(string_2_struct)
    # #
    # struct_2_stamp = time.mktime(string_2_struct) #将struct时间对象转成时间戳
    # print(struct_2_stamp)
    
    
    
    #将时间戳转为字符串格式
    # print(time.gmtime(time.time()-86640)) #将utc时间戳转换成struct_time格式
    # print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将utc struct_time格式转成指定的字符串格式
    
    
    
    
    
    #时间加减
    import datetime
    
    # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
    #print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2016-08-19
    # print(datetime.datetime.now() )
    # print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
    # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
    # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
    # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
    
    
    #
    # c_time  = datetime.datetime.now()
    # print(c_time.replace(minute=3,hour=2)) #时间替换
    复制代码

    模块详解:http://www.cnblogs.com/fclbky/articles/4098204.html

    格式化字符串:strftime() 和 strptime()
    date, datetime, 和 time 对象均支持使用 strftime(format) 方法,将指定的日期或时间转换为自定义的格式化字符串
    相反的,datetime.strptime() 类方法却是把格式化字符串转换为 datetime 对象

    格式化指令含义
    %a星期的简写(星期一 ~ 天:Mon, Tue, Wed, Thu, Fri, Sat, Sun)
    %A星期的全写(星期一 ~ 天:Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
    %w在一个星期中的第几天( 0 表示星期天 ... 6 表示星期六)
    %d在一个月中的第几天(01, 02, ..., 31)
    %b月份的简写(一月 ~ 十二月:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
    %B月份的全写(一月 ~ 十二月:January, February, March, April, May, June, July, August, September, October, November, December)
    %m月份(01, 02, ..., 12)
    %y用两个数字表示年份(例如 2014年 == 14)
    %Y用四个数字表示年份
    %H二十四小时制(00, 01, ..., 23)
    %I十二小时制(01, 02, ..., 11)
    %pAM 或者 PM
    %M分钟(00, 01, ..., 59)
    %S秒(00, 01, ..., 59)
    %f微秒(000000, 000001, ..., 999999)
    %z与 UTC 时间的间隔 ;如果是本地时间,返回空字符串((empty), +0000, -0400, +1030)
    %Z时区名称;如果是本地时间,返回空字符串((empty), UTC, EST, CST)
    %j在一年中的第几天(001, 002, ..., 366)
    %U在一年中的第几周,星期天作为第一天(00, 01, ..., 53)
    %W在一年中的第几周,星期一作为第一天(00, 01, ..., 53)
    %c用字符串表示日期和时间(Tue Aug 16 21:30:00 2014)
    %x用字符串表示日期(08/16/14)
    %X用字符串表示时间(21:30:00)
    %%表示百分号
  • 相关阅读:
    js学习(三)对象与事件
    js学习(二)
    js学习(一)
    SSM+Redis结构框架及概述
    javaBean、EJB、POJO
    flex布局时的居中问题
    layui后台管理系统的坑
    基于element的模糊查询
    vue数组的运用
    uni-app 图片上传(uploadFile)
  • 原文地址:https://www.cnblogs.com/fungitive/p/9136174.html
Copyright © 2011-2022 走看看