atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;
ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以使echo重定向等等;
stat 文件名称 #查看文件的时间戳
touch 文件名称 #同时修改文件的三个时间戳
[root@localhost Desktop]# stat luck
File: ‘luck’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 18690784 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:56:31.796064017 +0800
Modify: 2019-06-09 00:56:31.796064017 +0800
Change: 2019-06-09 00:56:31.796064017 +0800
Birth: -
[root@localhost Desktop]# touch luck 使用touch更改时间戳
[root@localhost Desktop]# stat luck
File: ‘luck’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 18690784 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:57:21.177064849 +0800
Modify: 2019-06-09 00:57:21.177064849 +0800 三个时间戳全部更改
Change: 2019-06-09 00:57:21.177064849 +0800
Birth: -
[root@localhost Desktop]# cat luck 查看文件
[root@localhost Desktop]# stat luck
File: ‘luck’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 18690784 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:57:57.349065458 +0800 atime时间戳更改
Modify: 2019-06-09 00:57:21.177064849 +0800
Change: 2019-06-09 00:57:21.177064849 +0800
Birth: -
[root@localhost Desktop]# chmod 777 luck 更改文件权限
[root@localhost Desktop]# stat luck
File: ‘luck’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 18690784 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:57:57.349065458 +0800
Modify: 2019-06-09 00:57:21.177064849 +0800
Change: 2019-06-09 00:58:27.947065974 +0800 ctime时间更改
Birth: -
[root@localhost Desktop]# vim luck 更改文件内容
[root@localhost Desktop]# stat luck
File: ‘luck’
Size: 9 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 18690784 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-06-09 00:58:58.063066481 +0800
Modify: 2019-06-09 00:59:02.477066556 +0800 mtime时间更改
Change: 2019-06-09 00:59:02.478066556 +0800 ctime时间更改
Birth: -
import os #必须先导入os模块
os.path.getatime(’/mnt/bbo’) # 获取文件的atime
os.path.getmtime(’/mnt/bbo’) # 获取文件的mtile
os.path.getctime(’/mnt/bbo’) #获取文件的ctime
import os
ctime =os.path.getctime('/mnt/bbo')
atime = os.path.getatime('/mnt/bbo')
mtime = os.path.getmtime('/mnt/bbo')
print(ctime)
print(atime)
print(mtime)
1560014243.3380852
1560014243.3380852
1560014243.3380852 输出的都是时间戳类型
时间表示的几种类型
1,时间戳
2,字符串时间
3,元组时间
import os
import time
print(time.time())
print(time.ctime())
print(time.localtime())
1560014616.375011 时间戳
Sun Jun 9 01:23:36 2019 字符串时间
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=9, tm_hour=1, tm_min=23, tm_sec=36, tm_wday=6, tm_yday=160, tm_isdst=0) 元组时间
时间戳:
时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示,时间戳单位最适于做日期运算
元组时间:
用一个元组装起来的9组数字处理时间:
info = time.localtime() # 用一个变量接收元组时间
info.tm_year # 返回年份
info.tm_mon # 返回月份
元组时间的九个属性都可以分别输出。
把元组的时间转换为时间戳
import time
import os
tuple_time =time.localtime()
# print(tuple_time) 此处打印出的的是元组时间。
print(time.mktime(tuple_time)) 改为时间戳
1560015355.0
把元组时间转换成字符串时间
import time
import os
tuple_time =time.localtime()
print(time.strftime('%m-%d',tuple_time)) 月 日时间戳
print(time.strftime('%Y-%m-%d',tuple_time)) 具体的年月日时间戳
print(time.strftime('%T',tuple_time)) 具体的时间点
print(time.strftime('%F',tuple_time)) 和%m-%d的效果是一样的
06-09
2019-06-09
01:41:28
2019-06-09
将时间戳类型转换成为字符串时间
import time
import os
ptime =os.path.getctime('/etc/passwd')
print(ptime) 打印出时间戳类型
print(time.ctime(ptime))
1559388258.6890132
Sat Jun 1 19:24:18 2019
将时间戳转换为元组
import time
import os
tuple_time = time.localtime()
pwd_time = os.path.getctime('/etc/passwd')
print(time.localtime(pwd_time))
实验效果
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=11, tm_hour=16, tm_min=50, tm_sec=1, tm_wday=5, tm_yday=131, tm_isdst=0)
将元组类型转换为时间戳
import time
import os
tuple_time = time.localtime()
print(time.mktime(tuple_time))
1560395910.0
格式化日期:把元组时间转换成字符串时间
使用 time 模块的 strftime 方法来格式化日期:可以按照想要的格式对日期进行格式化,只需要组合相应的格式化符号即可
格式:time.strftime("%Y-%m-%d %H:%M:%S", 元组时间)
#常用的习惯:年月日之间使用-连接。时分秒之间使用:连接。
查看当前的时间,第二个是更具体的时间戳
import os
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
print(date.today())
print(datetime.now())
2019-06-13
2019-06-13 11:24:53.114813
计算三天前的时间和三天后的时间
import os
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
d = date.today()
delta = timedelta(days=3)
print(d + delta)
print(d - delta)
2019-06-16
2019-06-10
计算两个小时前的时间和两个时间后的时间
import os
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
now_hour = datetime.now()
delta = timedelta(hours=2)
print(now_hour + delta)
print(now_hour - delta)
2019-06-13 13:26:48.157090
2019-06-13 09:26:48.157090
返回两个时间,计算两个时间之间的时间差
import os
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
now_time = datetime.now()
pdd_time = os.path.getmtime('/etc/passwd')
print(pdd_time)
pdd_time_war = datetime.fromtimestamp(pdd_time)
print(pdd_time_war)
delta = now_time - pdd_time_war
print(delta)
1557564601.2830243
2019-05-11 16:50:01.283024
32 days, 18:37:23.484431
需求:
import os
import psutil
from datetime import datetime
print('主机信息'.center(50,'*'))
info =os.uname()
print(
"""
操作系统:%s
主机名称:%s
内核版本:%s
硬件架构:%s
"""%(info.sysname,info.nodename,info.release,
info.machine)
)
print('开机信息'.center(50,'*'))
boot_time=psutil.boot_time()#返回一个时间戳
# 将时间戳转化为datetime类型的时间
boot_time_bbj =datetime.fromtimestamp(boot_time)
now_time =datetime.now()
delta_time=datetime.now()
delta_time=now_time -boot_time_bbj
print('开机时间:',boot_time_bbj)
# str是为了将时间对象转换为字符串,实现分离
print('当前时间:',str(now_time).split('.')[0])
print('开机时长:',str(delta_time).split('.')[0])
print('当前登陆用户'.center(50,'*'))
login_user = psutil.users()
print(login_user)