Python中的模块--os,sys,time,datetime

2022-09-16 14:19:31

一 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平台上的同名函数实现

表示时间的三种格式

  1. 时间戳
  2. 格式化的时间字符串
  3. 元组(共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))

在这里插入图片描述

  • 作者:木子葭
  • 原文链接:https://blog.csdn.net/qq_42725815/article/details/85213686
    更新时间:2022-09-16 14:19:31