1. 程式人生 > >python3.6入門到高階(全棧) day021 基本模組1

python3.6入門到高階(全棧) day021 基本模組1

一. 今日主要內容
1. 關於模組(引入模組)
import
from xxx import xxx
2. Collections
1. Counter 計數器
例 s = "you like pig"
print(Counter(s))
2. 棧: 先進後出.
佇列:先進先出
例 # import queue
# #
# q = queue.Queue() # 建立佇列
# q.put("李嘉誠")
# q.put("陳冠希")
# q.put("周潤發")
# q.put("吳彥祖")
#
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get())
# # print(q.get()) # 佇列中如果沒有元素了. 繼續獲取的話. 會阻塞
# print("拿完了")
deque:雙向佇列
例 # from collections import deque
#
# q = deque() # 建立一個雙向佇列
# q.append("高圓圓")
# q.append("江疏影")
# q.appendleft("趙又廷")
# q.appendleft("劉大哥")
# # 劉大哥 趙又廷 高圓圓 江疏影
# print(q.pop()) # 從右邊獲取資料
# print(q.pop())
# print(q.popleft()) # 從左邊獲取資料
# print(q.popleft())
# print(q.pop())

3. defaultdict 預設值字典
例 from collections import defaultdict
lst= [11,22,33,44,55,66,77,88,99]
# d = defaultdict(list)
# for el in lst:
# if el < 66:
# d["key1"].append(el) # key1預設是不存在的. 但是可以拿key1. 一個空列表.
# else:
# d["key2"].append(el)
# print(d)

4. namedtuple 命名元祖. struct_time 結構化時間就是命名元祖


5. OrederedDict 有序字典。 按照我們儲存的順序儲存. 和3.6以後的字典一樣的
3. time 時間模組
1. 獲取系統時間 time.time() 時間戳
2. 格式化時間 strftime() 時間格式: %Y-%m-%d %H:%M:%S %Y-%m-%d
例 s = time.strftime("%Y-%m-%d %H:%M:%S") # 必須記住
print(s)

3. 結構化時間 time.gmtime() time.localtime()
例 t =time.gmtime(1888888888)
str_time =time.strftime('%Y-%m-%d %H:%M:%S',t)
print(str_time)
strptime() 把格式化時間轉化成結構化時間
例 s = "2020-10-01 12:18:12"
t = time.strptime(s, "%Y-%m-%d %H:%M:%S") # 轉化成結構時間
print(t)

mktime() 把結構化時間轉化成時間戳
例 s = "2020-10-01 12:18:12"
t = time.strptime(s, "%Y-%m-%d %H:%M:%S") # 轉化成結構時間
print(time.mktime(t))


拓展例子 while 1:
s =time.strftime('%Y-%m-%d %H:%M:%S')
print(s)
time.sleep(1)

時間差的計算

# # 中文
# import locale
# locale.setlocale(locale.LC_CTYPE, "chinese")


# 時間差 1小時30分
# begin = "2018-11-14 16:30:00"
# end = "2018-11-14 18:00:00"
# # 用時間戳計算出時間差(秒)
# begin_struct_time = time.strptime(begin, "%Y-%m-%d %H:%M:%S")
# end_stract_time = time.strptime(end, "%Y-%m-%d %H:%M:%S")
#
# begin_second = time.mktime(begin_struct_time)
# end_second = time.mktime(end_stract_time)
#
# # 秒級的時間差 180000
# diff_time_sec = abs(begin_second - end_second)
#
# # 轉換成分鐘
# diff_min = int(diff_time_sec//60)
# print(diff_min)
#
# diff_hour = diff_min//60 # 1
# diff_min_1 = diff_min % 60 # 30
#
# print("時間差是 %s小時%s分鐘" % (diff_hour, diff_min_1))

# begin = "2019-11-14 16:30:00"
# end = "2018-11-14 18:00:00"
# # 用時間戳計算出時間差(秒)
# begin_struct_time = time.strptime(begin, "%Y-%m-%d %H:%M:%S")
# end_stract_time = time.strptime(end, "%Y-%m-%d %H:%M:%S")
#
# begin_second = time.mktime(begin_struct_time)
# end_second = time.mktime(end_stract_time)
#
# # 秒級的時間差 180000
# diff_time_sec = abs(begin_second - end_second)
#
# # 轉化成結構化時間
# t = time.gmtime(diff_time_sec) # 最好用格林尼治時間。 否則有時差
# print(t)
#
# print("時間差是%s年%s月 %s天 %s小時%s分鐘" % (t.tm_year-1970, t.tm_mon-1, t.tm_mday-1,t.tm_hour, t.tm_min ))



4. os和sys
os.sep 檔案路徑分隔符
所有和作業系統相關的內容都在os模組
os.makedirs('dirname1/dirname2') 可⽣成多層遞迴⽬錄
os.removedirs('dirname1') 若⽬錄為空,則刪除,並遞迴到上⼀級⽬錄,如若也為空,則刪
除,依此類推
os.mkdir('dirname') ⽣成單級⽬錄;相當於shell中mkdir dirname
os.rmdir('dirname') 刪除單級空⽬錄,若⽬錄不為空則⽆法刪除,報錯;相當於shell中
rmdir dirname
os.listdir('dirname') 列出指定⽬錄下的所有⽂件和⼦⽬錄,包括隱藏⽂件,並以列表⽅式
列印
os.remove() 刪除⼀個⽂件
os.rename("oldname","newname") 重新命名⽂件/⽬錄
os.stat('path/filename') 獲取⽂件/⽬錄資訊
os.system("bash command") 運⾏shell命令,直接顯示
os.popen("bash command).read() 運⾏shell命令,獲取執⾏結果
os.getcwd() 獲取當前⼯作⽬錄,即當前python指令碼⼯作的⽬錄路徑
os.chdir("dirname") 改變當前指令碼⼯作⽬錄;相當於shell下cd
# os.path
os.path.abspath(path) 返回path規範化的絕對路徑
os.path.split(path) 將path分割成⽬錄和⽂件名⼆元組返回
os.path.dirname(path) 返回path的⽬錄。其實就是os.path.split(path)的第⼀個元素
os.path.basename(path) 返回path最後的⽂件名。如何path以/或\結尾,那麼就會返回空值。
即os.path.split(path)的第⼆個元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是絕對路徑,返回True
os.path.isfile(path) 如果path是⼀個存在的⽂件,返回True。否則返回False
os.path.isdir(path) 如果path是⼀個存在的⽬錄,則返回True。否則返回False
os.path.join(path1[, path2[, ...]]) 將多個路徑組合後返回,第⼀個絕對路徑之前的引數
將被忽略
os.path.getatime(path) 返回path所指向的⽂件或者⽬錄的最後訪問時間
os.path.getmtime(path) 返回path所指向的⽂件或者⽬錄的最後修改時間
os.path.getsize(path) 返回path的⼤⼩
# 特殊屬性:
os.sep 輸出作業系統特定的路徑分隔符,win下為"\\",Linux下為"/"
os.linesep 輸出當前平臺使⽤的⾏終⽌符,win下為"\r\n",Linux下為"\n"
os.pathsep 輸出⽤於分割⽂件路徑的字串 win下為;,Linux下為:
os.name 輸出字串指示當前使⽤平臺。win->'nt'; Linux->'posix'

os.stat() 屬性解讀:
stat 結構:
st_mode: inode 保護模式
st_ino: inode 節點號。
st_dev: inode 駐留的裝置。
st_nlink: inode 的連結數。
st_uid: 所有者的⽤戶ID。
st_gid: 所有者的組ID。
st_size: 普通⽂件以位元組為單位的⼤⼩;包含等待某些特殊⽂件的資料。
st_atime: 上次訪問的時間。
st_mtime: 最後⼀次修改的時間。
st_ctime: 由作業系統報告的"ctime"。在某些系統上(如Unix)是最新的元資料更改的時間,在
其它系統上(如Windows)是建立時間(詳細資訊參⻅平臺的⽂檔)。

sys.path python查詢模組的路徑
所有和python直譯器相關的都在sys模組.
sys.argv 命令⾏引數List,第⼀個元素是程式本身路徑
sys.exit(n) 退出程式,正常退出時exit(0),錯誤退出sys.exit(1)
sys.version 獲取Python解釋程式的版本資訊
sys.path 返回模組的搜尋路徑,初始化時使⽤PYTHONPATH環境變數的值
sys.platform 返回作業系統平臺名稱