一 time與datetime模塊python
時間戳:計算時間用time()--float clock()算法
localtime:本地時間localtime --struct_timeshell
UTC時間: gmtime --struct_timejson
返回struct_time的函數主要有gmtime(),localtime(),strptime()bash
time.localtime([secs]):將一個時間戳轉換爲當前時區的struct_time。secs參數未提供,則以當前時間爲準。dom
time.gmtime([secs]):和localtime()方法相似,gmtime()方法是將一個時間戳轉換爲UTC時區(0時區)的struct_time。函數
time.time():返回當前時間的時間戳。編碼
time.mktime(t):將一個struct_time轉化爲時間戳。spa
time.sleep(secs):線程推遲指定的時間運行。單位爲秒。操作系統
time.strftime(format[, t]):把一個表明時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化爲格式化的時間字符串。若是t未指定,將傳入time.localtime()。
time.strptime(string[, format]):把一個格式化時間字符串轉化爲struct_time。實際上它和strftime()是逆操做。
1 """ 2 datetime 3 python實現的一個時間處理模塊 4 time 用起來不太方便 因此就有了datetme 5 總結 datetime相比time 更靈活 更本土化 6 7 timedelta表示時間差 8 兩個時間差能夠 +-*/ 9 時間差和datetime 能夠+- 10 """ 11 import datetime 12 13 # 獲取時間 獲取當前時間 而且返回的是格式化字符時間 14 print(datetime.datetime.now()) 15 16 # 單獨獲取某個時間 年 月 17 d = datetime.datetime.now() 18 print(d.year) 19 print(d.day) 20 21 # 手動指定時間 22 d2 = datetime.datetime(2018,8,9,9,50,00) 23 print(d2) 24 25 # 計算兩個時間的差 只能- 不能加+ 26 print(d - d2) 27 28 # 替換某個時間 29 print(d.replace(year=2020)) 30 31 # 表示時間差的模塊 timedelta 32 print(datetime.timedelta(days=1)) 33 34 t1 = datetime.timedelta(days=1) 35 t2 = datetime.timedelta(weeks=1) 36 print(t2 - t1) 37 # 時間差能夠和一個datetime進行加減 38 print(d + t2)
二 random模塊
random.randint(1,10)語句的含義是產生1至10(包含1與10)的一個隨機數(整數int型)。(參數爲整數不可爲浮點數不然會報錯)
random.random()生成一個0到1之間的隨機浮點數,包括0但不包括1,也就是[0.0, 1.0)。
random.uniform(a, b)生成a、b之間的隨機浮點數。不過與randint不一樣的是,a、b能夠不是整數,也不用考慮大小。
即
random.uniform(3.65,10.56)#能夠這樣
random.uniform(10.56, 3.65)#也能夠這樣
random.choice(seq)從序列中隨機選取一個元素。seq須要是一個序列,好比list、元組、字符串。
random.randrange(start, stop, step)生成一個從start到stop(不包括stop),間隔爲step的一個隨機整數。start、stop、step都要爲整數,且start<stop。
random.sample(p, k)從p序列中,隨機獲取k個元素,生成一個新序列。sample不改變原來序列。
這個模塊很 666,還支持三角、β分佈、指數分佈、伽馬分佈、高斯分佈等等很是專業的隨機算法。
random.shuffle(x)把序列x中的元素順序打亂。shuffle直接改變原有的序列。
三 os模塊
os.getcwd() 獲取當前⼯工做⽬目錄,即當前python腳本⼯工做的⽬目錄路路徑
os.chdir("dirname") 改變當前腳本⼯工做⽬目錄;至關於shell下cd
os.curdir 返回當前⽬目錄: ('.')
os.pardir 獲取當前⽬目錄的⽗父⽬目錄字符串串名:('..')
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.sep 輸出操做系統特定的路路徑分隔符,win下爲"\\",Linux下爲"/" os.linesep 輸出當前平臺使⽤用的⾏行行終⽌止符,win下爲"\t\n",Linux下爲"\n"
os.pathsep 輸出⽤用於分割⽂文件路路徑的字符串串 win下爲;,Linux下爲:
os.name 輸出字符串串指示當前使⽤用平臺。win->'nt'; Linux->'posix'
os.system("bash command") 運⾏shell命令,直接顯示
os.environ 獲取系統環境變量
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的⼤大⼩小
# normcase ⽤用於將路路規範化 會將大寫轉爲小寫 斜槓改成當前系統分隔符 print(os.path.normcase("\\a\\b\\ABCS")) # normpath用於將路路徑規範化 不僅將非法的分隔符替換爲合法分隔符 還將 大寫轉爲小寫 而且會執行行..的回到上一層 print(os.path.normpath("/a/b/../ABCS"))
四 sys模塊
sys.argv
: 實現從程序外部向程序傳遞參數。
sys.exit([arg])
: 程序中間的退出,arg=0爲正常退出。
sys.getdefaultencoding()
: 獲取系統當前編碼,通常默認爲ascii。
sys.setdefaultencoding()
: 設置系統默認編碼,執行dir(sys)時不會看到這個方法,在解釋器中執行不經過,能夠先執行reload(sys),在執行 setdefaultencoding('utf8'),此時將系統默認編碼設置爲utf8。(見設置系統默認編碼 )
sys.getfilesystemencoding()
: 獲取文件系統使用編碼方式,Windows下返回'mbcs',mac下返回'utf-8'.
sys.path
: 獲取指定模塊搜索路徑的字符串集合,能夠將寫好的模塊放在獲得的某個路徑下,就能夠在程序中import時正確找到。
sys.platform
: 獲取當前系統平臺。
sys.stdin,sys.stdout,sys.stderr
: stdin , stdout , 以及stderr 變量包含與標準I/O 流對應的流對象. 若是須要更好地控制輸出,而print 不能知足你的要求, 它們就是你所須要的. 你也能夠替換它們, 這時候你就能夠重定向輸出和輸入到其它設備( device ), 或者以非標準的方式處理它們
五 shutil模塊
主要做用與拷貝文件用的。
1.shutil.copyfileobj(文件1,文件2):將文件1的數據覆蓋copy給文件2。
2.shutil.copyfile(文件1,文件2):不用打開文件,直接用文件名進行覆蓋copy。
3.shutil.copymode(文件1,文件2):只拷貝權限,內容組,用戶,均不變。
4.shutil.copystat(文件1,文件2):僅拷貝狀態的信息,包括:mode bits, atime, mtime, flags
5.shutil.copy(src, dst)拷貝文件和權限
6.l.copy2(src, dst)拷貝文件和狀態信息
7.shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
遞歸的去拷貝文件夾
8.shutil.rmtree(path[, ignore_errors[, onerror]])遞歸的去刪除文件
9.shutil.move(src, dst)遞歸的去移動文件,它相似mv命令,其實就是重命名。
壓縮與解壓縮
shutil 能夠打包,可是⽆沒法解包,而且打包也是調⽤用tarfile 和 zipFile完成,解壓須要按照格式調用對應的模塊
打包
shutil.make_archive("test","tar","/Users/jerry/PycharmProjects/package/packa ge1")
import tarfile ,zipfile
zip 壓縮
z = zipfile.ZipFile ("test.zip","w") z.write ("sys.py") z.write ("start.py") z.close ()
zip 解壓
z = zipfile.ZipFile ("test.zip",'r') z.extractall ("/Users/jerry/PycharmProjects/package/aaa") z.close ()
tar 壓縮
t = tarfile.open ("test.tar","w") t.add ("start.py") t.add ("sys.py") t.close ()
tar 解壓
t = tarfile.open ("test.tar") t.extractall ("aaa/") t.close()
六 json&pickle模塊
JSON (JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。
Python3 中可使用 json 模塊來對 JSON 數據進行編解碼,它包含了兩個函數:
""" pickle產生的數據 只能由python讀取 (跨平臺性差) 從此你開發程序不可能就是單機程序 你須要和其餘設備 其餘平臺 交換數據 一三八四三八零零四三八 咱們須要找到一種通用的數據格式 讓各個平臺都能識別 json模塊 用於處理json格式數據的模塊 json 全稱 JavaScrip Object Notation js的對象表示法 因此json能支持的數據類型就是js支持數據類型 json格式標準 能存儲的有 str int float dic list bool 案列 要求 數據的最開始和最末尾 必須是{} [] {"name":"yyh"} json是一種通用的數據交換格式 目前主流的語言都可以輕鬆解析 注意: 在使用json格式的時候 數據類型必須按照要求來寫 而且 不支持python 元祖 True/Flase '' ''' 經常使用方法 序列化 dump 處理文件 dumps 處理字符串 反序列化 load 處理文件 loads 處理字符串 """ # 將python格式的數據序列化爲json格式 python中的任何類型都能被轉化爲json格式 表現形式不一樣 import json users = {'name':"音樂會","age":20,"hobbies":("music","movies")} # # print(json.dumps(users)) # json.dump(users,open("users.json","wt",encoding="utf-8")) # # json的反序列化 jsonstr = json.load(open("users.json","r",encoding="utf-8")) print(jsonstr)
pickle產生的數據 只能由python讀取 (跨平臺性差) 從此你開發程序不可能就是單機程序 你須要和其餘設備 其餘平臺 交換數據 一三八四三八零零四三八 咱們須要找到一種通用的數據格式 讓各個平臺都能識別 json模塊 用於處理json格式數據的模塊 json 全稱 JavaScrip Object Notation js的對象表示法 因此json能支持的數據類型就是js支持數據類型 json格式標準 能存儲的有 str int float dic list bool 案列 要求 數據的最開始和最末尾 必須是{} [] {"name":"yyh"} json是一種通用的數據交換格式 目前主流的語言都可以輕鬆解析 注意: 在使用json格式的時候 數據類型必須按照要求來寫 而且 不支持python 元祖 True/Flase '' ''' 經常使用方法 序列化 dump 處理文件 dumps 處理字符串 反序列化 load 處理文件 loads 處理字符串
""" pickle模塊 做用於序列化 序列化就是將內存中的數據持久化到硬盤 回顧 使用文件讀寫也能完成把數據持久化存儲 可是有侷限性 當數據比較複雜時用起來就很麻煩 例如 須要把一個字典存儲到硬盤中 先轉成字符串 寫入 讀取爲字符串 轉爲原始的格式 因此就有了pickle 1.能將全部python中的數據序列化 int float str dic list tuple set bool 2.反序列化 將以前序列化的數據 在恢復成python的數據格式 pickle產生的數據 只能由python讀取 (跨平臺性差) 從此你開發程序不可能就是單機程序 你須要和其餘設備 其餘平臺 交換數據 一三八四三八零零四三八 咱們須要找到一種通用的數據格式 讓各個平臺都能識別 """ users = {"name":"yyh","age":20,"hobbies":["打豆豆","飄"]} # f = open("a.txt","wt",encoding="utf-8") # f.write(str(users)) # f.close() import pickle # # print(pickle.dumps(users)) # 序列化 # f = open("p.txt","wb") # f.write(pickle.dumps(users)) # f.close() # # 反序列化 # f = open("p.txt","rb") # print(type(pickle.loads(f.read()))) # f.close() # 序列化 # pickle.dump(users,open("pp.txt","wb")) # print(pickle.load(open("pp.txt","rb")))
七 re模塊