python之路-day21-模塊介紹1

 

 

1、今日內容大綱node

  一、關於模塊python

    importshell

    from xxx import xxx    絕對導入bash

  二、Collections數據結構

    1)Counter 計數器 app

    2)棧:先進後出dom

       隊列:先進先出ui

       deque : 雙向隊列spa

    3)defaultdict  默認值字典操作系統

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

    5)OredereDict  有序字典,按照咱們存儲的順序保存

  三、time 時間模塊

    1)獲取系統時間 time.time()  時間戳

    2)格式化時間  strftime()  時間格式: %Y-%m-%d %H:%M:%S  or   %Y-%m-%d

    3) 結構化時間:time.gmetime()  time.localtime()----東八區

    4)把格式化時間轉化爲結構時間  strptime()

      把結構時間轉化爲時間戳  mktime()

  四、os和sys

    os.sep 文件路徑分隔符

    sys.path  python查找模塊的路徑

 


2、Collections 模塊

  一、Counter計數器 

from collections import Counter

s = " i am sylar, i have a dream,,,"

ss = Counter(s) # 計算⼀個字符串中每一個字符出現的次數
print(ss)

dic = {}
for el in s:   # 若是字典中包含有給定鍵,則返回該鍵對應的值,不然返回爲該鍵設置的值
    dic[el] = dic.setdefault(el,0) + 1

print(dic)


##結果:
Counter({' ': 7, 'a': 5, ',': 4, 'i': 2, 'm': 2, 'r': 2, 'e': 2, 's': 1, 'y': 1, 'l': 1, 'h': 1, 'v': 1, 'd': 1})
{' ': 7, 'i': 2, 'a': 5, 'm': 2, 's': 1, 'y': 1, 'l': 1, 'r': 2, ',': 4, 'h': 1, 'v': 1, 'e': 2, 'd': 1}

  

  2. deque 雙向隊列.
    (重點)說雙向隊列以前咱們須要瞭解兩種數據結構. 1. 棧, 2. 隊列
    1. 棧: FILO. 先進後出 -> 砌牆的磚頭, 老師傅作饅頭
    2. 隊列: FIFO. 先進先出 -> 買火⻋票排隊, 全部排隊的場景 

# 棧 (先進後出)

# class Stack:
#     def __init__(self,size):
#         self.index = 0  # 棧頂指針
#         self.lst = []
#         self.size = size
#
#     # 給棧添加元素
#     def push(self,item):
#         if self.index == self.size:
#             #棧已經滿了,不能再裝東西了
#             pass
#         self.lst.insert(self.index,item)  # 對於空列表,須要用insert插入內容
#         self.index += 1 # 棧頂指針向上移動
#
#     # 從棧中獲取數據
#     def pop_item(self):
#         if self.index == 0:
#             pass
#         self.index -= 1  # 頂指針向下移動
#         item = self.lst.pop(self.index)  # 獲取元素刪除
#         return item
#
# s = Stack(5)


# 隊列
# 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("done")


# # 雙向隊列
#
# 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())

 

  三、namedtuple 命名元組

    命名元組, 顧名思義. 給元組內的元素進⾏命名. 好比. 咱們說(x, y) 這是⼀個元組. 同時. 咱們還能夠認爲這是⼀個點座標.

    這時, 咱們就可使⽤namedtuple對元素進⾏命名

 

# from collections import namedtuple
# point = namedtuple("Point", ["x","y","z"])
# p = point(1,23,22)
# print(p.x)
# print(p.y)
# print(p.z)
# print(p)

 

  四、defaultdict: 能夠給字典設置默認值. 當key不存在時. 直接獲取默認值:

# from collections import defaultdict
#
# lst = [11,22,33,44,55,66,77,88]
#
# d = defaultdict(list)
#
# for el in lst:
#     if el < 66:
#         d["key1"].append(el)
#     else:
#         d["key2"].append(el)
# print(d)

 

3、time模塊

# time
# import time
# while 1:
#     s = time.strftime("%Y-%m-%d %H:%M:%S")
#     print(s)
#     time.sleep(1)

# import time
#
# t = time.gmtime(971150400.0)
# s = time.strftime("%Y-%m-%d %H:%M:%S",t)
# print(s)

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


# 時間顯示中文
# import locale,time
#
# locale.setlocale(locale.LC_COLLATE,"chinese")
# print(time.strftime("%Y年%m月%d日"))
#

# 計算時間差
# import time
# old_time = time.mktime(time.strptime("2018-11-10 10:30:00","%Y-%m-%d %H:%M:%S"))
# nowtime = time.mktime(time.strptime("2018-11-10 12:00:00","%Y-%m-%d %H:%M:%S"))
# dif_time = nowtime - old_time
# total_min = int(dif_time / 60)
# hour = int(total_min / 60)
# min = int(total_min % 60)
# print("時間差爲:%s小時%s分"%(hour,min))

 

4、random 模塊

import random

print(random.randint(1,3)) # 1-3隨機取一個,先後都爲閉區間
print(random.random())  # 0-1 之間的小數
print(random.uniform(3,10)) # 3-10 之間的隨機小數
print(random.randrange(1,10,3)) # [1,10) 從奇數中獲取隨機數

lst = [1,2,3,4,5,6]
random.shuffle(lst)  # 打散
print(lst)           #[6, 1, 5, 3, 2, 4]
print(random.choice([1, '周杰倫', ["蓋倫", "胡辣湯"]])) #取一個元素
print(random.sample([1, '23', [4, 5]], 2)) # 列表元素任意2個組合

 

5、os模塊

import 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_mtime: 最後⼀次修改的時間。
st_ctime: 由操做系統報告的"ctime"。在某些系統上(如Unix)是最新的元數據更改的時間,在
其它系統上(如Windows)是建立時間(詳細信息參⻅平臺的⽂檔)

 

6、sys模塊

 

全部和python解釋器相關的都在sys模塊. 
sys.argv 命令⾏參數List,第⼀個元素是程序自己路徑
sys.exit(n) 退出程序,正常退出時exit(0),錯誤退出sys.exit(1)
sys.version 獲取Python解釋程序的版本信息
sys.path 返回模塊的搜索路徑,初始化時使⽤PYTHONPATH環境變量的值
sys.platform 返回操做系統平臺名稱
相關文章
相關標籤/搜索