python内置模块

在python中内置了很多模块,无须额外配置就可使用。

模块和目录的区别:是否有 __init__.py 文件,若无则是目录,有则是模块。

datetime 模块

datetime是进行日期和时间处理的标准库。

获取当前时间和日期

 

from datetime import datetime
nowtime = datetime.now()       #获取当前日期和时间
print(nowtime)                 #输出结果:22018-04-24 15:59:42.417256
print(type(nowtime))           #输出结果:<class 'datetime.datetime'>
print(datetime.now().year)     #输出结果:2018
print(datetime.now().month)    #输出结果:4
print(datetime.now().day)      #输出结果:24
  datetime是一个模块,其中包含datetime类,我们使用的是datetime.now()中是datetime这个类。
        通过from datetime import datetime导入的才是datetime类,若仅导入import datetime,则需要使用datetime.datetime.now()方式使用。

datetime.now()返回的是当前日期和时间,类型为datetime

格式转换

指定日期和时间

 

from datetime import datetime
print(datetime(2018, 5, 1, 11, 30)) #输出结果: 2018-05-01 11:30:00
datetime转换为str 字符串

使用datetime.strftime()实现

 

from datetime import datetime
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) #输出结果:2018-04-24 16:11:41
 
datetime.now()  返回当前日期和时间。
 

str转换为datetime

使用datetime.strptime()实现

from datetime import datetime
 
print(datetime.strptime('2018-04-20 18:30:00', '%Y-%m-%d %H:%M:%S'))  #输出结果:2018-04-20 18:30:00
 

 

 

datetime转换为时间戳 timestamp
timestamp也就是常说的时间戳,表示自1970-01-01 00:00:00 UTC+00:00以来的秒数。
使用timestamp()实现

 

from datetime import datetime
print(datetime.now().timestamp())  #输出结果:1524558100.372925
时间戳timestamp转换为datetime
使用fromtimestamp实现

 

from datetime import datetime
print(datetime.fromtimestamp(1524497333.38282))     #输出结果:2018-04-23 23:28:53.382820
print(datetime.utcfromtimestamp(1524497333.38282))  #输出结果:2018-04-23 15:28:53.382820
此处fromtimestamp转换之后的datetime默认为本地时间,也就是计算机配置的时区对应的时间(本机为UTC+8:00)。
使用utcfromtimestamp转换之后的datetime为UTC标准时区的时间

 

  • datetime加减
    对日期进行向前或者向后的推算,使用timedelta
    from datetime import datetime
    from datetime import timedelta
    print(datetime.now())    #输出结果:2018-04-23 23:41:12.694505
    print(datetime.now() + timedelta(hours=2))    #输出结果:2018-04-24 01:41:12.694505
    print(datetime.now() - timedelta(hours=2))    #输出结果:2018-04-23 21:41:12.694505
    print(datetime.now() - timedelta(weeks=1))    #输出结果:2018-04-16 23:41:12.694505
    print(datetime.now() + timedelta(days=1))    #输出结果:2018-04-24 23:41:12.694505
    
     

timedelta后面的参数还有minutessecondsmicroseconds

python中常用的日期时间格式化符号

1
2
3
4
5
6
7
8
9
%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
%c 本地相应的日期表示和时间表示

 

更多的格式化符号点击查看。

time

time模块中,函数gmtime()localtime()strptime()以时间元组struct_time形式返回。
首先介绍时间元组的表示格式

struct_time

时间格式time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=9, tm_min=3, tm_sec=26, tm_wday=1, tm_yday=114, tm_isdst=0)
索引值|属性|值
-|:-:|:-:
0|tm_year|年(如2015)
1|tm_mon|月,1-12
2|tm_mday|日,1-31
3|tm_hour|时,0-23
4|tm_min|分,0-59
5|tm_sec|秒,0-61
6|tm_wday|星期,0-6(0表示星期一)
7|tm_yday|一年中第几天(1-266)
8|tm_isdst|是否为夏令时。0,1,-1

说明
tm_sec取值范围为0-61是考虑了闰秒和双闰秒的因素。
tm_isdst中,使用夏令时为1,不使用夏令时为0,当不确定是否使用夏令时为-1。
夏令时(DST,Daylight Saving Time)指利用夏天天亮的早,人为的将时间提前一小时,以充分利用光照资源减少照明时间,从而节约照明。

time.time()

返回当前时间的时间戳。

import time
print(time.time())    #输出结果:1524531805.2834768

 
 
time.sleep()

线程推迟指定的时间运行,单位为秒。

time.clock()

在unix系统,返回进程时间,用秒表示的浮点数(时间戳)。
在windows系统,第一次调用返回的是进程运行的时间,第二次之后调用均返回自第一次调用以后到现在的运行时间。

import time
print(time.clock())    #输出结果:4.105467826269739e-07
time.sleep(1)    #线程推迟1秒运行
print(time.clock())    #输出结果:1.0005993983026353
time.sleep(1)
print(time.clock())    #输出结果:1.9998817625266034
 

 

time.localtime([secs)

将一个时间戳转换为当前时区的struct_time,若未提供secs参数,返回当前时间的struct_time

import time
print(time.localtime())     
#输出结果:time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=9, tm_min=43, tm_sec=22, tm_wday=1, tm_yday=114, tm_isdst=0)
print(time.localtime(1304575584.1361799))     
#输出结果:time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=14, tm_min=6, tm_sec=24, tm_wday=3, tm_yday=125, tm_isdst=0)
 

 

time.gmtime([secs])

将一个时间戳转换为UTC时区的struct_time,若未提供secs参数,返回当前时间的对应的UTC时区struct_time

import time
print(time.gmtime())
#输出结果:time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=1, tm_min=46, tm_sec=28, tm_wday=1, tm_yday=114, tm_isdst=0)
print(time.gmtime(1304575584.1361799))
#输出结果:time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=6, tm_min=6, tm_sec=24, tm_wday=3, tm_yday=125, tm_isdst=0)
 

 

time.mktime(t)

将一个struct_time转换为时间戳。

import time
print(time.mktime(time.localtime()))    #输出结果:1524534556.0
 

 

time.asctime([t])

把一个表示时间的元组或者struct_time表示为Sun Jun 20 23:21:05 1993形式,若没有参数,将会time.localtime()作为参数传入。

import time
print(time.asctime(time.localtime()))    #输出结果:Tue Apr 24 09:53:03 2018
 

 

time.ctime([secs])

把一个时间戳转换为Sun Jun 20 23:21:05 1993形式,若没有参数或None的时候,默认将time.time()作为参数。

import time
print(time.ctime())    #输出结果:Tue Apr 24 09:55:15 2018
print(time.ctime(1304575584.1361799))     #输出结果:Thu May  5 14:06:24 2011
 

 

time.strftime(format[,t])

把一个表示时间的元组或者struct_time转换为格式化的时间字符串。如果未指定t(也就是表示时间的元组),传入time.localtime()。如果元组中的任何一个元素越界,ValueError错误将会被抛出。

import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))     #输出结果:2018-04-24 10:00:14
 

 

time.strptime(string[,format])

把一个格式化时间字符串转换为struct_time。也就是strftime()的逆操作。
当不指定字符串格式时,format默认格式为”%a %b %d %H:%M:%S %Y”(下面第二行的格式)。

import time
print(time.strptime("2018-04-24 10:00:14", "%Y-%m-%d %H:%M:%S"))     
#输出结果:time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=10, tm_min=0, tm_sec=14, tm_wday=1, tm_yday=114, tm_isdst=-1)
print(time.strptime("Tue Apr 24 10:03:14 2018"))     
#输出结果:time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=10, tm_min=3, tm_sec=14, tm_wday=1, tm_yday=114, tm_isdst=-1)
 

 

  • 总结
    在time模块中,一共有3种时间表示方式,分别是timstamp(时间戳)、struct_time(元组)和格式化字符串(str)。
  1. 返回时间戳(timestamp)的方法
    time() 无参数
    mktime() 参数为struct_time
  2. 返回元组(struct_time)的方法
    localtime() 无参数
    gmtime() 参数为timestamp
    strptime() 参数为str
  3. 返回字符串(str)的方法
    asctime() 参数为struct_time
    ctime() 参数为timestamp
    strftime() 参数为struct_time

更多的关于time模块内容点击查看。

 

commands 模块

 

commands是linux下特有的模块,用来执行linux命令。cmd代表系统命令。
注意:在python3.X中该模块已移除,使用subprocess替代。下面均为linux系统中python2.7.5环境执行结果。

getoutput(cmd)

getoutput(cmd)返回结果为cmd命令的执行结果(字符串)。

>>> import commands
>>> commands.getoutput("uname -a")
'Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux'
>>> commands.getoutput("uname -r")
'3.10.0-693.el7.x86_64'
 

 

getstatusoutput(cmd)

getstatusoutput(cmd)返回包含2个元素的元组。
第一个元素为命令执行状态(int),如果执行成功返回0,不成功返回非0。
第二个元素为命令执行结果(str)。

>>> import commands
>>> commands.getstatusoutput("uname -r")
(0, '3.10.0-693.el7.x86_64')
>>> commands.getstatusoutput("uname -a")
(0, 'Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux')
>>> commands.getstatusoutput("ls -l /eee/dd")
(512, 'ls: \xe6\x97\xa0\xe6\xb3\x95\xe8\xae\xbf\xe9\x97\xae/eee/dd: \xe6\xb2\xa1\xe6\x9c\x89\xe9\x82\xa3\xe4\xb8\xaa\xe6\x96\x87\xe4\xbb\xb6\xe6\x88\x96\xe7\x9b\xae\xe5\xbd\x95')
 

 

python中更为常用的是status, result = commands.getstatusoutput("uname -a")命令,通过一一对一个的方式赋值给status和result。


内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!