19082801python常见内建模块

1、time

>>> now = time.time()  # 当前时间 float类型
>>> time.strftime("%Y-%m-%d %H:%M:%S")  #当前时间 str
  '2016-11-04 15:29:58'

>>> time.ctime()   # 当前时间 english str
  'Fri Nov 4 15:40:42 2016'

>>> time.time()
1478244363.875308
>>> time.localtime()   # 当前时间 time结构体
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=15, tm_min=26, tm_sec=9, tm_wday=4, tm_yday=309, tm_isdst=0)

>>> time.localtime(now)  # float -> struct_time
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=15, tm_min=26, tm_sec=1, tm_wday=4, tm_yday=309, tm_isdst=0)

>>> time.strftime('%Z', time.localtime())   # 显示当前时区 China standard timezone
'CST'
>>> time.gmtime()    # 显示UTC标准时间 跟中国相差8个钟
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=7, tm_min=26, tm_sec=28, tm_wday=4, tm_yday=309, tm_isdst=0)

>>> a = '2016-11-04 15:29:58'  #时间字符串转化为time结构体
>>> time.strptime(a, "%Y-%m-%d %H:%M:%S")  
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=15, tm_min=29, tm_sec=58, tm_wday=4, tm_yday=309, tm_isdst=-1)

>>> a = '2016-11-04 15:29:58'  #时间字符串转成float类型
>>> time.mktime(time.strptime(a, "%Y-%m-%d %H:%M:%S"))
1478244598.0

>>> time_tuple = (2016, 11, 04, 13, 51, 18, 2, 317, 0) #time tuple格式转成字符串
>>> time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)    
'2016-11-04 13:51:18'

>>> a = 1478244598.0           #float类型转成时间字符串
>>> b = time.localtime(a)
>>> time.strftime("%Y-%m-%d %H:%M:%S", b)
'2016-11-04 15:29:58'
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

2、datetime

#获取当前时间
>>> datetime.datetime.now()    # datetime tuple
datetime.datetime(2016, 11, 4, 15, 52, 17, 680405)

>>> time.mktime(datetime.datetime.now().timetuple())   # float类型
1478245984.0
>>> datetime.datetime.now().replace(second=0, microsecond=0)  # 秒数为0 毫秒数为0
  datetime.datetime(2016, 11, 4, 15, 54)

>>> datetime.date.today()   # 当前天
  datetime.date(2016, 11, 4)

>>> now = datetime.datetime.now()  #datetime tuple转成时间字符串
>>> now.strftime("%Y-%m-%d %H:%S:%M")
'2016-11-04 16:06:00'

>>> now = datetime.datetime.now()  #datetime tuple转成float类型
>>> time.mktime(now.timetuple())
1478246406.0

>>> a = datetime.date(2016, 11, 4)  #datetime date和time转换
>>> datetime.datetime.strptime(str(a),'%Y-%m-%d') 
datetime.datetime(2016, 11, 4, 0, 0)
>>> a
datetime.date(2016, 11, 4)

#获取当前时间的前一段时间
now = datetime.datetime.now()
# 前一小时
a = now - datetime.timedelta(hours=1)
print a.strftime("%Y-%m-%d %H:%S:%M")

# 前一天
b = now - datetime.timedelta(days=1)
print b.strftime("%Y-%m-%d %H:%S:%M")

# 上周日
c = now - datetime.timedelta(days=now.isoweekday())
print c.strftime("%Y-%m-%d %H:%S:%M")# 上周一
d = c - datetime.timedelta(days=6)
print d.strftime("%Y-%m-%d %H:%S:%M")# 上个月最后一天
e = now - datetime.timedelta(days=now.day)
print e.strftime("%Y-%m-%d %H:%S:%M")

# 上个月第一天
print datetime.datetime(e.year, e.month, 1)

# 获取的是UTC标准时区的时间float类型
(datetime.datetime.now() - datetime.datetime(1970, 1,1,0, 0, 0,0)).total_seconds()   

3、collections

3.1 namedtuple

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(1, 2)
>>> p.x
1
>>> p.y
2

 3.2 deque

>>> from collections import deque
>>> q = deque(['a', 'b', 'c'])
>>> q.append('x')
>>> q.appendleft('y')
>>> q
deque(['y', 'a', 'b', 'c', 'x'])

3.3  defaultdict

>>> from collections import defaultdict
>>> dd = defaultdict(lambda: 'N/A')
>>> dd['key1'] = 'abc'
>>> dd['key1'] # key1存在
'abc'
>>> dd['key2'] # key2不存在,返回默认值
'N/A'

3.4 OrderedDict

>>> from collections import OrderedDict
>>> d = dict([('a', 1), ('b', 2), ('c', 3)])
>>> d # dict的Key是无序的
{'a': 1, 'c': 3, 'b': 2}
>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

#注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:
>>> od = OrderedDict()
>>> od['z'] = 1
>>> od['y'] = 2
>>> od['x'] = 3
>>> list(od.keys()) # 按照插入的Key的顺序返回
['z', 'y', 'x']

 OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key:

from collections import OrderedDict

class LastUpdatedOrderedDict(OrderedDict):

    def __init__(self, capacity):
        super(LastUpdatedOrderedDict, self).__init__()
        self._capacity = capacity

    def __setitem__(self, key, value):
        containsKey = 1 if key in self else 0
        if len(self) - containsKey >= self._capacity:
            last = self.popitem(last=False)
            print('remove:', last)
        if containsKey:
            del self[key]
            print('set:', (key, value))
        else:
            print('add:', (key, value))
        OrderedDict.__setitem__(self, key, value)

3.5 chainmap

ChainMap可以把一组dict串起来并组成一个逻辑上的dict,查找的时候,会按照顺序在内部的dict依次查找。
 

from collections import ChainMap
import os, argparse

# 构造缺省参数:
defaults = {
    'color': 'red',
    'user': 'guest'
}

# 构造命令行参数:
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user')
parser.add_argument('-c', '--color')
namespace = parser.parse_args()
command_line_args = { k: v for k, v in vars(namespace).items() if v }

# 组合成ChainMap:
combined = ChainMap(command_line_args, os.environ, defaults)

# 打印参数:
print('color=%s' % combined['color'])
print('user=%s' % combined['user'])

没有参数:

$ python3 use_chainmap.py 
color=red
user=guest

命令行传参:

$ python3 use_chainmap.py -u bob
color=red
user=bob

同时传入命令行参数和环境变量:

$ user=admin color=green python3 use_chainmap.py -u bob
color=green
user=bob

3.6 Counter

>>> from collections import Counter
>>> c = Counter()
>>> for ch in 'programming':
...     c[ch] = c[ch] + 1
...
>>> c
Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})

 4、base64

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值