一 os模块
- 为访问操作系统的特定熟悉提供方法
- 提供了对平台模块的封装(对 windows, 对 mac 的封装等)
系统目录间的分隔符
Linux: /var/log/messages
Windows: C:\Project\hello.py
常见的os模块
- os.system 并没有返回值,是靠副作用产生输出的
- os.popen 返回一个文件对象
- os.popen2 返回两个文件对象,一个是 stdin, 一个是 stdout
- os.popen3 返回三个文件对象 :stdin,stdout,stderr
- os.environ 对环境变量的操作
- os.getcwd() 获取当前的工作目录
- os.stat() 相当于 Linux 下 stat 命令
- os.listdir() 列出给定目录的内容
- os.mkdir(path) 创建目录
- os.mkdirs(path) 创建目录树,相当于mkdir -p 操作
#在Linux里面执行shell命令
#1.第一种方式;可以判断命令是否执行成功;返回值为0,执行成功,返回值不为0,执行失败
res=os.system('hostnamle')
print('res:',res)
#2.第二种方式: 用来保存命令的执行结果
res=os.popen('hostname').read()
print('res:',res)
常见的os.path模块
os.path 是os 的一个子模块 , 主要是对路径进行解析、创建、测试和其他的一些操作,封装了不同平台的路径操作。
路径解析:
- path.split(’/tmp/test/ab’)
- path.basename(’/tmp/test/ab’)
- path.dirname(’/tmp/test/ab’)
文件测试相关:
- os.path.isabs
- os.path.isdir
- os.path.isfile
- os.path.islink
文件属性相关:
- os.path.getatime (‘filename’)
- os.path.getctime (‘filename’)
- os.path.getmtime (‘filename’)
- os.path.getsize(‘filename’)
import itchat
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
#需求: 当文件助手发送消息, 执行发送的内容,
# 1). 如果执行成功, 【显示执行成功】:执行结果
# 2). 反之显示执行失败
if msg['ToUserName']=='filehelper':
#获取要执行命令的内容
command=msg['Content']
# 让电脑执行命令代码
# 如果执行成功, 返回值为0
if os.system(command)==0:
res=os.popen(command).read()
result='[返回值] - 命令执行成功,执行结果:\n' + res
itchat.send(result,'filehelper')
#命令执行失败,请重新输入命令
else:
result='[返回值] -命令%s执行失败,请重试' %(command)
itchat.send(result,'filehelper')
if __name__=='__main__':
itchat.auto_login(hotReload=True)
itchat.run()
二 sys模块
sys 模块,主要提供了系统相关的配置和操作,封装了探测、改变解释器runtime 以及资源的交互。
- sys.version 得到解释器的版本信息
- sys.platform 得到当前运行平台
- sys.argv 获取传递给脚本的参数,参数解析类似于 bash 的方式,第一个参数代表脚本本身;
import sys
print(sys.version)
print(sys.platform)
#返回一个列表, 第一个元素为脚本名
print(sys.argv)
三 time模块
time模块--时间获取和转换
time模块提供各种时间相关的功能
与时间相关的模块有:time,datetime,calendar
这个模块中定义的大部分函数是调用C平台上的同名函数实现
表示时间的三种格式
- 时间戳
- 格式化的时间字符串
- 元组(共9个元素)
常用时间转换
- 把元组的时间转换为时间戳
import time
tuple_time=time.localtime()
print(time.mktime(tuple_time))
- 把元组的时间转换字符串格式
import time
print(time.strftime('%m-%d'))
print(time.strftime('%Y-%m-%d'))
print(time.strftime('%T'))
print(time.strftime('%F'))
- 字符串格式转换为元组
import time
s = '2018-10-10'
print(time.strptime(s, '%Y-%m-%d'))
s_time = '12:12:30'
print(time.strptime(s_time, '%H:%M:%S'))
四 datetime模块
- date 以公历形式储存日历日期(年、月、日)
- time 将时间储存为时、分、秒、毫秒
- datetime 储存日期和时间
- timedelta 表示两个datetime值之间的差(日、秒、毫秒)
1.获取当前的日期并且以字符串方式返回
from datetime import datetime
print(datetime.today())
2.对象加或者减一个时间间隔, 返回一个新的日期对象
from datetime import timedelta
d = datetime.today()
print(d)
delta = timedelta(days=3)
print(d - delta)
应用案例
需求:
1. 获取当前主机信息, 包含操作系统名, 主机名, 内核版本, 硬件架构等
2. 获取开机时间和开机时长;
3. 获取当前登陆用户
import os
import psutil
import time
from datetime import datetime
from psutil._common import suser
info=os.uname()
print('1. 主机信息'.center(50,'*'))
print("""
操作系统:%s,
主机名:%s,
内核版本:%s,
硬件架构:%s
""" %(info.sysname,info.nodename,info.release,info.machine))
print('2.开机时间'.center(50,'*'))
#获取开机时间的时间戳,需要安装psutil模块
boot_time=psutil.boot_time()
#将时间戳转换为字符串格式,两种办法
#print(time.ctime(boot_time))
boot_time=datetime.fromtimestamp(boot_time)
#获取当前时间
now_time=datetime.now()
#获取时间差
delta_time=now_time-boot_time
delta_time=str(delta_time).split('.')[0]
print("""
开机时间:%s
当前时间:%s
开机时长:%s
""" %(boot_time,now_time,delta_time))
print('3.当前登陆用户'.center(50,'*'))
#获取当前登陆用户的详细信息,需求是获取登陆名和登陆主机
users=psutil.users()
#获取需要的信息
users={'%s %s' %(user.name,user.host) for user in users}
#实现信息的去重
for user in users:
print('\t %s' %(user))