Python常用模块

OS模块

与操作系统交互

 

 
1os.sep取操作系统的路径分隔符
2os.name操作系统平台。windows下为nt;linux/unix下为posix
3os.environ获取环境变量
4os.getcwd()得到当前工作目录,Python脚本工作的目录
5os.curdir返回当前目录
6os.pardir获取当前目录的父目录字符串名
7os.getenv()/putenv()读取和设置环境变量
8os.listdir()返回制定目录下的文件和文件目录
9os.remove(file)删除一个文件
10os.stat(file)获取文件属性
11os.chmod(file)修改文件权限和时间戳
12os.mkdir(name)创建目录
13os.rmdir(name)删除目录
14os.removedirs()删除多个目录
15os.system()运行shell命令
16os.linesep当前平台的行终止符。windows使用'\r\n';linux为'\n';Mac为'\r'
17os.makedirs()创建多层递归目录
18os.rename()重命名文件或目录
19os.pathsep获取分割文件路径的字符串
20os.path.abspath(文件路径)返回一个文件或目录的绝对路径
21os.path.split(文件路径)将文件分割成目录和文件名二元组返回
22os.path.dirname(文件路径)返回文件的目录
23os.path.basename(文件路径)返回文件最后的文件名。
24os.path.exists(文件路径)文件是否存在
25os.path.isabs(文件路径)文件是否是绝对路径
26os.path.isfile(文件路径)是否是文件
27os.path.isdir(文件路径)是否是目录
28os.path.join(文件路径)将多个字符串路径组合成一个完成的路径返回,第一个绝对路径之前的参数被忽略。
29os.path.getattime(文件路径)返回所指向的文件或目录的最后存取时间戳
30os.path.getmtime(文件路径)返回所指向的文件或目录的最后存取时间戳
31os.stat().st_size检查一个文件的大小,返回字节

SYS模块

与python解释器交互

1sys.argv在外部向程序内部传递参数
2sys.path获取指定模块搜索路径的字符串集合,可以将写 好的模块放到得到的某个路径下,就可以在程序中import时正确找到
 sys.modules是一个全局字典,该字典是python启动后就加载内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再次导入该模块式,python会直接到字典中查找,从而加快程序运行速度。它拥有字典所拥有的一切方法
 sys.platform显示平台
 sys.stdin\stdout\stderrstdin、stdout、stderr变量包含于标准I/O流对应的流对象,如果需要更好的控制输出,而print不能满足你的要求,它们就是你所需要的。你也可以替换它们,这时候你就可以重定向输出和输入到其它设备,或者以非标准的方式处理
 sys.exit(n)执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0正常退出,其它为异常)

hashlib模块

hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5、sha1,、sha224、sha256、sha384、sha512等算法。

hash.digest():返回摘要,作为二进制数据字符串值。

hash.hexdigest():返回摘要,作为十六进制数据字符串值。

hash.copy():复制。

import hashlib


# md5
string = 'admin123'
md5 = hashlib.md5()
md5.update(string.encode('utf8')) # 需要转码, 因为hashlib加密的字符串类型为二进制编码。
result = md5.hexdigest()
print(result)

# sha1
sha1 = hashlib.sha1()
sha1.update(string.encode('utf8'))
result = sha1.hexdigest()
print(result)

# sha256
sha256 = hashlib.sha256()
sha256.update(string.encode('utf8'))
result = sha256.digest()
print(result)

执行结果:

0192023a7bbd73250516f069df18b500 # MD5
f865b53623b121fd34ee5426c792e5c33af8c227 #SHA1
b'$\x0b\xe5\x18\xfa\xbd\'$\xdd\xb6\xf0N\xeb\x1d\xa5\x96tH\xd7\xe81\xc0\x8c\x8f\xa8"\x80\x9ft\xc7 \xa9' #SHA256

time模块

time模块中时间表现格式主要有三种:

  1. timestamp:时间戳,表示从1970年1月1日0点0分0秒到现在时间的秒数。
  2. struc_time:时间元组,共有9个元素。
  3. format time:格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

生成时间戳:

>>> import time
>>> time.time()
1491631287.1797802
>>> #由struct_time生成timestamp
>>> time.mktime(time.localtime())
1491631461.0       #后面始终都是一位小数,0 


 

生成struct_time(时间元组):

>>> # 直接生成时间元组
>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=14, tm_min=7, tm_sec=20, tm_wday=5, tm_yday=98, tm_isdst=0)
>>> # 把时间戳转换为时间元组
>>> time.localtime(time.time())
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=14, tm_min=8, tm_sec=5, tm_wday=5, tm_yday=98, tm_isdst=0)
>>> #把localtime()换为gmtime() 就表示格林威治时间
>>> 
>>> #把格式化时间转换为时间元组
>>> time.strptime('2017-4-8 14:12:12','%Y-%m-%d %X')
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=14, tm_min=12, tm_sec=12, tm_wday=5, tm_yday=98, tm_isdst=-1)
>>> time.strptime('2017-4-8','%Y-%m-%d')
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=98, tm_isdst=-1)
属性
tm_year2017
tm_mon1-12
tm_mday1-31
tm_hour0-23
tm_min0-59
tm_sec0-59
tm_wday(weekday)0-6(0表示周日)
tm_yday(一年中的第几天)1-366
tm_isdst(是否是夏令时)默认为-1

生成format_time(格式化时间):

>>> # 直接生成format_time
>>> time.strftime('%Y-%m-%d %X')
'2017-04-08 14:16:11'
>>> 
>>> #把struct_time转换为format_time
>>> time.strftime('%Y-%m-%d %X',time.localtime())
'2017-04-08 14:17:30'
>>> 


      %Y  年 Year with century as a decimal number.
      %m  月  Month as a decimal number [01,12].
      %d  日  Day of the month as a decimal number [01,31].
      %H  时  Hour (24-hour clock) as a decimal number [00,23].
      %M  分  Minute as a decimal number [00,59].
      %S  秒  Second as a decimal number [00,61].
      %z      Time zone offset from UTC.
      %a  周几简写(英文Sun)    Locale's abbreviated weekday name.
      %A  周几全名(英文Sunday)    Locale's full weekday name.
      %b  月份简写(英语Apr)    Locale's abbreviated month name.
      %B  月份全名(英语April)    Locale's full month name.
      %c      Locale's appropriate date and time representation.
      %I  十二小时制小时数   Hour (12-hour clock) as a decimal number [01,12].
      %p  AM/PM   Locale's equivalent of either AM or PM.
                      %X   本地相应时间
       %x   本地相应日期

生成固定时间格式:

>>> time.asctime()
'Sat Apr  8 14:20:04 2017'
>>>
>>> time.ctime()
'Sat Apr  8 14:20:09 2017'
>>> 
>>> time.asctime(time.localtime())
'Sat Apr  8 14:20:27 2017'
>>>
>>> time.ctime(time.time())
'Sat Apr  8 14:20:44 2017'

时间加减

>>> 
>>> #timestamp加减是以秒为单位
>>> import time
>>> t1 = time.time()
>>> t2 = t1 + 10
>>> t1
1491634614.3497803
>>> t2
1491634624.3497803
>>>

time.sleep(seconds):休眠一段时间。

datetime模块

datetime重新封装了time模块,提供了更多接口。提供的类有:date、time、datetime、timedelta、tzinfo。

  1. date类
    1. datetime.date(year, month, day)
      1. date.max、date.min:date对象所能表示的最大、最小日期
      2. date.resolution:date对象表示日期的最小单位。这里是天
      3. date.today():返回一个表示当前本地日期的date对象
      4. date.fromtimestamp(timestamp):根据给定的时间戳返回date对象
        >>> import datetime
        >>> datetime.date.max
        datetime.date(9999, 12, 31)
        >>> datetime.date.min
        datetime.date(1, 1, 1)
        >>> datetime.date.resolution
        datetime.timedelta(1)
        >>> datetime.date.today()
        datetime.date(2017, 4, 8)
        >>> datetime.date.fromtimestamp(time.time())
        datetime.date(2017, 4, 8)
        from datetime import date
        
        d1 = date(2017,4,8)  #date对象(年月日都不能是以0开头 (2017,04,08)错误 )
        
        >>> d1 = datetime.date(2017,4,8)
        >>> d1
        datetime.date(2017, 4, 8)
        >>> d1.year
        >>> d1.month
        >>> d1.day
        >>> 
        
        d1.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
        
        >>> d2 = d1.replace(2017,3,20)
        >>> d1
        datetime.date(2017, 4, 8)
        >>> d2
        datetime.date(2017, 3, 20)
        >>>
        
        d1.timetuple():返回日期对应的time.struct_time对象; 
        
        >>> d1.timetuple()
        time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=98, tm_isdst=-1)
        >>> 
        
        d1.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推; 
        
        >>> d1.weekday()
              #周六
        >>> 
        
        d1.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推; 
        
        >>> d1.isoweekday()
             #周六   weekday镜像?
        >>> 
        
        d1.isocalendar():返回格式如(year,sum_week,day)的元组; 
        
        >>> d1
        datetime.date(2017, 4, 8)
        >>> d1.isocalendar()
        (2017, 14, 6)          #第一个是2017年, 14是 当前为今年的第14周  6 表示 第14周结束后过了6天(当前是15周)
        >>> 
        
        d1.isoformat():返回格式如'YYYY-MM-DD’的字符串; 
        
        >>> d1.isoformat()
        '2017-04-08'
        >>> 
        
        d1.strftime(fmt):和time模块format相同。
        
        >>> d1.strftime('%Y-%m-%d')
        '2017-04-08'
        >>>

         

  2. time类
    time.min、time.max:time类所能表示的最小、最大时间
    
    >>> import datetime
    >>> datetime.time.min
    datetime.time(0, 0)
    >>> datetime.time.max
    datetime.time(23, 59, 59, 999999)
    >>> 
    
    time.resolution:时间的最小单位,这里是1微秒;
    
    >>> datetime.time.resolution
    datetime.timedelta(0, 0, 1)      #秒,毫秒,微秒
    >>>
    t1 = datetime.time(10,23,15, 100)  #time对象 时,分,秒...
    t1.hour、t1.minute、t1.second、t1.microsecond:时、分、秒、微秒;
    
    >>> t = datetime.time(15,30,20, 200)
    >>> t
    datetime.time(15, 30, 20, 200)
    >>> t.hour
    >>> t.minute
    >>> t.second
    >>> t.microsecond
    >>> 
    
    t1.tzinfo:时区信息;
    t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性
         (原有对象仍保持不变);
    t1.isoformat():返回型如"HH:MM:SS"格式的字符串表示; 
    t1.strftime(fmt):同time模块中的format;

     

  3. datetime类
    datetime相当于date和time结合起来。
    datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
    datetime.today():返回一个表示当前本地时间的datetime对象;
    datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
    datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间
    datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
    datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
    datetime.combine(date, time):根据date和time,创建一个datetime对象;
    datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
    dt=datetime.now()#datetime对象
    dt.year、month、day、hour、minute、second、microsecond、tzinfo:
    dt.date():获取date对象;
    dt.time():获取time对象;
    dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]):
    dt. timetuple ()
    dt. utctimetuple ()
    dt. toordinal ()
    dt. weekday ()
    dt. isocalendar ()
    dt. isoformat ([ sep] )
    dt. ctime ():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
    dt. strftime (format)

     

  4. timedelta类
    使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。
    >>> import datetime
    >>> d = datetime.datetime.now()
    >>> d
    datetime.datetime(2017, 4, 8, 15, 42, 1, 656144) 8 >>> d1 = d + datetime.timedelta(days=-1)      #昨天
    >>> d1
    datetime.datetime(2017, 4, 7, 15, 42, 1, 656144)
    >>> d2 = d - datetime.timedelta(days=1)      #昨天
    >>> d2
    datetime.datetime(2017, 4, 7, 15, 42, 1, 656144)
    >>> d3 = d + datetime.timedelta(days=1)          #明天
    >>> d3     
    datetime.datetime(2017, 4, 9, 15, 42, 1, 656144)
    >>>

     

  5. tzinfo类

from datetime import datetime, tzinfo,timedelta

"""
tzinfo是关于时区信息的类
tzinfo是一个抽象类,所以不能直接被实例化
"""
class UTC(tzinfo):
    """UTC"""
    def __init__(self,offset = 0):
        self._offset = offset

    def utcoffset(self, dt):
        return timedelta(hours=self._offset)

    def tzname(self, dt):
        return "UTC +%s" % self._offset

    def dst(self, dt):
        return timedelta(hours=self._offset)

# 北京时间
beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8))
print "beijing time:",beijing
# 曼谷时间
bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))
print "bangkok time",bangkok
# 北京时间转成曼谷时间
print "beijing-time to bangkok-time:",beijing.astimezone(UTC(7))

# 计算时间差时也会考虑时区的问题
timespan = beijing - bangkok
print "时差:",timespan

# Output==================
北京时间: 2020-10-10 00:00:00+08:00
曼谷时间: 2020-10-10 00:00:00+07:00
beijing time to bangkok time: 2020-10-09 23:00:00+07:00
时差: -1 day, 23:00:00

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值