资讯专栏INFORMATION COLUMN

python大佬的养成计划----os,datetime,time模块补充

frank_fun / 3507人阅读

摘要:是否则检验指定的对象是否存在。由于的模块实现主要调用库,所以各个平台可能有所不同。时间格式时间戳的方式通常来说,时间戳是指格林威治时间年月日时分秒北京时间年月日时分秒起至现在的总秒数。元组方式元组共有个元素,返回的函数主要有,,。

os模块

os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块

常用os命令 os.name

name顾名思义就是"名字",这里的名字是指操作系统的名字,主要作用是判断目前正在使用的平台,并给出操作系统的名字,如Windows 返回 "nt"; Linux 返回"posix"。注意该命令不带括号。

os.getcwd()

全称应该是"get current work directory",获取当前工作的目录,如:返回结果为:""E:python资料python-teavhday17""。注意该命令带括号,除了第一个命令不带括号之外,以下命令基本都带括号。

os.listdir(path)

列出path目录下所有的文件和目录名。以列表的形式全部列举出来,其中没有区分目录和文件。

>>import os
>>os.listdir()
[".idea", "01_os模块补充.py", "02_time模块详解.py", "03_datetime模块详解.py", "04_应用案例_系统监控.py", "05_namedtupled新型数据类型.py", "06_python与Excel.py", "07_excel需求.py", "08_今日作业_批量更新商品价格.py", "09_json模块.py", "10_获取IP对应的地理位置.py", "Book1.xlsx", "date.txt", "Excel应用参考", "json.txt", "produceSales.xlsx"]
os.path命令

os.path.isfile(path)——判断指定对象是否为文件。是返回True,否则False

os.path.isdir(path)——判断指定对象是否为目录。是True,否则False

os.path.exists(path)——检验指定的对象是否存在。是True,否则False

os.path.split(path)——返回路径的目录和文件名,即将目录和文件名分开,而不是一个整体。此处只是把前后两部分分开而已。就是找最后一个"/"。

os.path.abspath()——获得绝对路径

os.path.basename(path)——返回文件名

os模块示例 查看文件修改日期
#查看D:/python_need/data文件的修改日期
#并保存到当前目录下的"date.txt"文件中
import os
import time
import codecs
filename = "D:python_needdata.txt"
ctime = os.path.getctime(filename)  #输出时间戳:1536580746.5799537
tuple_time = time.localtime(ctime)  #将时间戳变成元组时间,time.struct_time(tm_year=2018, tm_mon=9, tm_mday=10, tm_hour=19, tm_min=59, tm_sec=6, tm_wday=0, tm_yday=253, tm_isdst=0)

year = tuple_time.tm_year
month = tuple_time.tm_mon
day = tuple_time.tm_mday

with codecs.open("date.txt","w","utf-8") as f:  #打开方式一定要使用codecs.open(),否则中文字符会乱码
    f.write("%s的修改日期是%s年%s月%s日" %(filename,year,month,day))

time模块

在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
UTC(Coordinated Universal Time)即格林威治天文时间,为世界标准时间。中国北京为UTC+8。
DST(Daylight Saving Time)即夏令时。

时间格式

时间戳(timestamp)的方式:通常来说,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。

>>import time
>>time.time()
1536645999.1539526

元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
元组时间元素如下:

>>import time
>>time.localtime()
time.struct_time(tm_year=2018, tm_mon=9, tm_mday=11, tm_hour=14, tm_min=7, tm_sec=31, tm_wday=1, tm_yday=254, tm_isdst=0)

字符串时间

>>import time
>>time.ctime
"Tue Sep 11 14:04:52 2018"
时间格式的相互转换

import time
str_time = time.ctime()#Tue Sep 11 14:10:43 2018
tuple_time = time.localtime()#time.struct_time(tm_year=2018, tm_mon=9, tm_mday=11, tm_hour=14, tm_min=11, tm_sec=27, tm_wday=1, tm_yday=254, tm_isdst=0)
timestamp = time.time()#1536646330.1479473

#把元组时间转换成时间戳
print(time.mktime(tuple_time))

#把元组时间转换成字符串时间
# strftime(format[, tuple]) -> string
print(time.strftime("%Y-%m-%d-%H-%M-%S"))#指定格式

#把字符串时间转换成元组时间
print(time.strptime("2018-9-10","%Y-%m-%d"))#指定格式

datetime模块

time模块主要用于时间访问和转换,这个模块提供了各种与时间相关的函数。但不是所有方法在任意平台中有效。
datetime模块提供了处理日期和时间的类,既有简单的方式,又有复杂的方式。它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。
datetime模块中定义的类

from datetime import time
from datetime import datetime
from datetime import timedelta
today_time = datetime.today() #获取当前本区时间,并以字符串格式显示2018-09-11 15:04:25.317120
now_time = datetime.now()  #返回指定时区日期时间的datetime对象,如果不指定tz参数则结果同上
delta = timedelta(days=3)   #增减或减少一个delta
print(now_time-delta)   #返回三天前的时间,2018-09-08 15:07:11.904546

综合应用

实现对系统的监控

#   1. 获取当前主机信息, 包含操作系统名, 主机名, 内核版本, 硬件架构等
#   2. 获取开机时间和开机时长
#   3. 获取当前登陆用户

#win下没有os.uname()用法
#解决方案,使用platform.uname()
import platform
import time

import psutil
import datetime

info =platform.uname()  #uname_result(system="Windows", node="DESKTOP-EN0LQJH", release="10", version="10.0.16299", machine="AMD64", processor="Intel64 Family 6 Model 142 Stepping 10, GenuineIntel")

print("1. 主机信息".center(50, "*"))
print("""
    操作系统: %s, 
    主机名: %s, 
    内核版本: %s, 
    硬件架构: %s
""" %(info.system, info.node, info.release, info.machine))

print("2. 开机时间".center(50, "*"))
boot_time = psutil.boot_time()  #时间戳,1536040894.0
#datetime对象,datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]
#fromtimestamp,根据指定的时间戳创建一个datetime对象
boot_time = datetime.datetime.fromtimestamp(boot_time)  #2018-09-04 14:01:34
now_time = datetime.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()  #[suser(name="Sheen_Star", terminal=None, host="0.4.0.0", started=1536585663.0, pid=None)]
users = {"%s %s" %(user.name, user.host) for user in users} #集合实现数据去重
for user in users:
    print("	当前登录用户有: %s" %(user))

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42407.html

相关文章

  • python大佬养成计划----flask应用

    摘要:将用户登陆信息绑定数据库要求将用户登陆时的信息,发送至后台与数据库进行比对,来判断用户是否可登陆文件,用来创建远程连接的类主程序创建连接判断用户名是否存在返回的是语句查询结果的个数如果为,没有查到。 将用户登陆信息绑定数据库 要求将用户登陆时的信息,发送至后台与数据库进行比对,来判断用户是否可登陆 #config.py文件,用来创建远程连接的类 class DB: HOST =...

    daryl 评论0 收藏0
  • python大佬养成计划----基于flask_sqlalchemy网页显示数据库信息

    摘要:网页显示数据库信息使用我们刚学习的,在网页中显示数据库表中的数据。在开始运行程序前,确保数据库中执行过创建表和创建用户的操作,详见链接描述。 网页显示数据库信息 使用我们刚学习的flask_sqlalchemy,在网页中显示数据库表中的数据。在开始运行程序前,确保数据库中执行过创建表和创建用户的操作,详见链接描述。 # 模板文件templates/list.html {% extend...

    cppowboy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<