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))