os模块提供了多数操做系统的功能接口函数。当os模块被导入后,它会自适应于不一样的操做系统平台,根据不一样的平台进行相应的操做,在python编程时,常常和文件、目录打交道,因此离不了os模块node
name顾名思义就是'名字',这里的名字是指操做系统的名字,主要做用是判断目前正在使用的平台,并给出操做系统的名字,如Windows 返回 'nt'; Linux 返回'posix'。注意该命令不带括号。python
全称应该是'get current work directory',获取当前工做的目录,如:返回结果为:''E:\python资料\python-teavh\day17''。注意该命令带括号,除了第一个命令不带括号以外,如下命令基本都带括号。算法
列出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']
#查看D:/python_need/data文件的修改日期 #并保存到当前目录下的'date.txt'文件中 import os import time import codecs filename = 'D:\\python_need\\data.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))
在Python中,一般有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。因为Python的time模块实现主要调用C库,因此各个平台可能有所不一样。
UTC(Coordinated Universal Time)即格林威治天文时间,为世界标准时间。中国北京为UTC+8。
DST(Daylight Saving Time)即夏令时。json
时间戳(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()。
元组时间元素以下:ide
>>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'))#指定格式
time模块主要用于时间访问和转换,这个模块提供了各类与时间相关的函数。但不是全部方法在任意平台中有效。
datetime模块提供了处理日期和时间的类,既有简单的方式,又有复杂的方式。它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操做提供高效的属性提取功能。
datetime模块中定义的类ui
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
实现对系统的监控idea
# 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("\t当前登陆用户有: %s" %(user))