python大佬的養成計劃----os,datetime,time模塊補充

os模塊

os模塊提供了多數操做系統的功能接口函數。當os模塊被導入後,它會自適應於不一樣的操做系統平臺,根據不一樣的平臺進行相應的操做,在python編程時,常常和文件、目錄打交道,因此離不了os模塊node

經常使用os命令

os.name

name顧名思義就是'名字',這裏的名字是指操做系統的名字,主要做用是判斷目前正在使用的平臺,並給出操做系統的名字,如Windows 返回 'nt'; Linux 返回'posix'。注意該命令不帶括號。python

os.getcwd()

全稱應該是'get current work directory',獲取當前工做的目錄,如:返回結果爲:''E:\python資料\python-teavh\day17''。注意該命令帶括號,除了第一個命令不帶括號以外,如下命令基本都帶括號。算法

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

圖片描述

time模塊

在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'))#指定格式

圖片描述

datetime模塊

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

圖片描述

相關文章
相關標籤/搜索