Day8,os模塊,時間戳
一、os模塊
- 指定相對的目錄
file = open(test.txt, r, encoding=utf-8, errors=ignore)
2. 目錄的操作
# 獲取當前的目錄, . 表示當前目錄; .. 表示上一級目錄print(os.curdir)# 獲取當前工作目錄,參數可為相對路徑或者絕對路徑path = os.getcwd()print(path)# 獲取當前目錄下的所有文件的文件名(包括目錄)fileNames = os.listdir() # 空參數表示獲取當前目錄下的所有文件名(包括目錄)fileNames = os.listdir(rd:codes) # 可以傳入絕對路徑print(fileNames, type(fileNames))
3. 創建目錄
在當前目錄下創建一個目錄,如果該文件已經存在,會報異常
os.mkdir(yyy) # 在當前目錄下創建一個yyy的目錄os.mkdir(rd:codesday01) # 在絕對路徑下創建一個目錄
4. 修好目錄名或文件名
# 參數1表示修改前的文件或目錄名字,參數2表示修改後的名字os.rename(參數1, 參數2)# 修改目錄名"新聞" 為newsos.rename(新聞, news)# 傳遞絕對路徑,兩個參數的路徑必須一致os.rename(rd:codesyyy.txt",r"d:codesxxx.txt)#傳遞絕對路徑,在同個盤符下可以遞歸創建目錄os.renames(rd:codesyyy.txt",r"d:codesaaabbxxx.txt)
5. 刪除目錄和文件
# 刪除目錄,參數可為相對路徑或者絕對路徑os.rmdir(d:/aa)# 刪除文件,參數可為相對路徑或者絕對路徑os.remove(test.txt)
6. 獲取文件的屬性
os.stat(test.txt) # 獲取文件的所有屬性,返回os.stat_result 類的實例。
通過調用屬性值的方式可以獲取相應的屬性值:
7. 獲取文件的絕對路徑
os.path.abspath(test.txt) # 只限於當前目錄下的文件,以拼接的方式實現,不考慮文件是否存在
8. 路徑的拼接
1)字元串拼接:
path = rd:aaafileName = r upian.pngfilePath = path + fileName
2)函數拼接
absPath = os.path.join(os.getcwd(), hahaha.txt)file = open(absPath, w)file.close()
8. 分割路徑
路徑會分割成元組的形式: (目錄路徑,文件名)
path1 = rd: 1list.pypath2 = r01list.pyprint(os.path.split(path1)) # (d:\, 01list.py)print(os.path.splitext(path1)) # (d:\01list, .py)# 分割文件名與該文件名的格式print(os.path.splitext(path2)) # (01list, .py)
9. 判斷是否是目錄
path1 = r"d:codesday01.py"path2 = r"d:codes"isDir1 = os.path.isdir(path1)isDir2 = os.path.isdir(path2)print(isDir1, isDir2) # False , True
10. 判斷是否是文件
path1 = r"d:codesday01.py"path2 = r"d:codes"isDir1 = os.path.isfile(path1)isDir2 = os.path.isfile(path2)print(isDir1, isDir2) # True , False
11. 判斷該目錄或文件是否存在
os.path.exists(path) # 存在返回True,不存在返回False
12. 獲取文件的路徑的目錄
print(os.path.dirname(path1)) # 返迴文件的目錄print(os.path.basename(path1)) # 返迴文件名
13. shell 命令
# os.system的指令,參數為shell命令,只能在當前目錄操作。若想切換到其他目錄下操#作,必須運用os.chdir(path)來先切換目錄os.system(cd..) # 返回上一目錄
二、時間戳
1. 定義:
1) UTC(格林威治天文時間), 世界統一時間
2) DST: 夏令時, 為了節約能源而人為規定的時間
2. 表現形式:
1) 時間戳:以整型或者浮點型來表示一個時間間隔,以1970年1月1日0點0分0秒為參考時間;
2)時間元組: 一種python的數據結構,有九個整型內容:年: tm_year, 月: tm_month, 日: tm_day時: tm_hour, 分: tm_min, 秒: tm_sec, 一個星期中的第幾天, 一年中的第幾天, 是不是夏令時:tm_isdst 0 表示是,1 表示不是, -1表示自己處理;
3) 字元串形式:2018/03/21, 2018-03-21, 10:15:54, 20180321
3. 獲取當前時間戳
time1 = time.time()print(time1)1521635427.2268448
4. 時間戳轉換為時間元組
gmtime(): 獲取世界標準時間,如果沒有參數,表示將當前的世界標準世界轉換成時間元組
tupleTime1 = time.gmtime()print(tupleTime1)time.struct_time(tm_year=2018, tm_mon=3, tm_mday=21, tm_hour=12, tm_min=32, tm_sec=16, tm_wday=2, tm_yday=80, tm_isdst=0)
localtime():獲取本地時間(UTC+8)
tupleTime1 = time.localtime() # 如果沒有參數,表示將本地時間轉換成時間元組print(tupleTime1)time.struct_time(tm_year=2018, tm_mon=3, tm_mday=21, tm_hour=20, tm_min=34, tm_sec=0, tm_wday=2, tm_yday=80, tm_isdst=0)
5. 時間元組轉換成時間戳
time1 = time.mktime(time.localtime()) # 不能為空參,會自動捨棄時間戳小數部分print(time1)1521635798.0
6. 將時間元組轉換成時間字元串
import timestrTime1 = time.strftime(%Y-%m-%d %H:%M:%S, time.localtime()) # 參數1:時間格式; 參數2: 時間元組print(strTime1)# 中文格式strTime2 = time.strftime(%Y{y}%m{m}%d{d}, time.localtime())print(strTime2.format(y=年, m=月, d=日))# 簡寫方式strTime3 = time.strftime(%x %x, time.localtime())print(strTime3)2018-03-21 20:47:062018年03月21日03/21/18 03/21/18
7. 將時間字元串轉換成時間元組
tupleTime1 = time.strptime(2017-10-18 11:38:05, %Y-%m-%d %H:%M:%S) # 參數1: 時間字元串; 參數2: 時間格式字元串,必須與時間字元串格式對應print(tupleTime1)time.struct_time(tm_year=2017, tm_mon=10, tm_mday=18, tm_hour=11, tm_min=38, tm_sec=5, tm_wday=2, tm_yday=291, tm_isdst=-1)
8. 將時間戳轉換成字元串
strTime1 = time.ctime(time.time())print(strTime1)Wed Mar 21 20:51:22 2018
9. 讓程序睡眠
print(begin to sleep)time.sleep(2) # 參數是休眠的時間,單位是秒print(wake up)
10. 記錄該程序cpu的執行時間
# 在windows系統中,第一次執行clock表示的是記錄當前開始的時間,下次執行clock表示的是與上次執行clock的執行時間間隔clock1 = time.clock()print(clock1)1.811556462138923e-06
11. 時間字元串支持的格式符號:(區分大小寫)
%a 本地星期名稱的簡寫(如星期四為Thu)
%A 本地星期名稱的全稱(如星期四為Thursday) %b 本地月份名稱的簡寫(如八月份為agu) %B 本地月份名稱的全稱(如八月份為august)%c 本地相應的日期和時間的字元串表示(如:15/08/27 10:20:06)
%d 一個月中的第幾天(01 - 31) %f 微妙(範圍0.999999) %H 一天中的第幾個小時(24小時制,00 - 23) %I 第幾個小時(12小時制,0 - 11) %j 一年中的第幾天(001 - 366) %m 月份(01 - 12) %M 分鐘數(00 - 59) %p 本地am或者pm的相應符 %S 秒(00 - 61)%U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之 前的所有天數都放在第0周。
%w 一個星期中的第幾天(0 - 6,0是星期天) %W 和%U基本相同,不同的是%W以星期一為一個星期的開始。 %x 本地相應日期字元串(如15/08/01) %X 本地相應時間字元串(如08:08:10) %y 去掉世紀的年份(00 - 99)兩個數字表示的年份 %Y 完整的年份(4個數字表示年份)%z 與UTC時間的間隔(如果是本地時間,返回空字元串)%Z 時區的名字(如果是本地時間,返回空字元串) %% 『%』字元三、作業
練習一:
1. 編寫腳本,實現文件的重命名功能
用 sys.argv 接收命令行的參數(2個: 原名,新名)]
python rename.py aa.txt bb.txt
python rename.py d:/fns.txt d:/fns_day08.txt
python rename.py ../day02_file/aa.py ../day02_file/bb.py
2. 編寫腳本,實現文件的徹底刪除功能
用 sys.argv 接收命令行的一個參數(文件名)
3. 實現文件目錄的創建
sys.argv 接收目錄的名稱
練習二:
1. 獲取指定目錄下文件列表,將所有.txt文件全部刪除
要求:1.如果目錄不存在,則提示用戶輸入錯誤
2. 判斷文件的擴展名是否為.txt
3. 文件刪除後,輸出提示信息
2. 獲取指定目錄下文件列表,顯示文件名和文件大小
文件大小的單位可用: bytes、k、m
推薦閱讀:
※不懂編程,如何才能學好python呢?
※Python3 解釋器
※python模擬登陸知乎(最新版)
※轉載「我是賣包子的,想學AI編程留在北京」
※例舉 Python 的一些坑?
TAG:Python |