python-time模塊--pickle模塊

time 模塊

爲何要有time模塊,time模塊有什麼用?

time模塊用來打印時間,而且有暫停程序的功能,須要時間的地方就要調用。json

time模塊的三種格式

時間戳(timestamp)

時間戳表示的是從1970年1月1日0:00:00開始按秒計算的偏移量dom

import time
print(time.time())

1560166598.8710632

格式化時間(須要本身定義格式)

格式化時間就是普通字符串格式的時間表示方式,須要本身定義格式。函數

print(time.strftime('%Y-%m-%d'))
2019-06-10

結構化時間(struct—time)

print(time.localtime()) # 北京時間
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=19, tm_min=42, tm_sec=45, tm_wday=0, tm_yday=161, tm_isdst=0)

print(time.gmtime()) # 格林威治時間(時間標準時間)
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=11, tm_min=43, tm_sec=46, tm_wday=0, tm_yday=161, tm_isdst=0)

結構化時間轉換爲格式化時間

struct_time = time.localtime()
print(time.strftime('%Y-%m-%d',struct_time))

2019-06-10

結構化時間轉換爲時間戳

print(time.mktime(struct_time))
1560167473.0

時間戳轉換成結構化時間

stamp_time = time.time()
print(time.localtime(stamp_time))

time.struct_time(tm_year=2019, tm_mon=6, tm_mday=10, tm_hour=19, tm_min=55, tm_sec=25, tm_wday=0, tm_yday=161, tm_isdst=0)

格式化時間轉換成結構化時間

print(time.strptime('2019-06-01 12:00:00','%Y-%m-%d %X'))

time.struct_time(tm_year=2019, tm_mon=6, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=152, tm_isdst=-1)

程序延時

time.sleep(1)

datetime 模塊

爲何要有datetime模塊,有什麼用?

datetime模塊能進行時間的加減學習

獲取當前時間

import datetime

now = datetime.datetime.now()
print(now)

2019-06-10 20:05:05.697198

時間的加減

print(now + datetime.timedelta(3))  # 3表明的參數表示天數,且裏面的參數只能是天,不能進行年和月的加減

print(now + datetime.timedelta(-3))

2019-06-13 20:06:34.748685
2019-06-07 20:09:11.633673

時間的年月日的修改

print(now.replace(year=2010,month=6,day=8,hour=19,minute=10,second=11))

2010-06-08 19:10:11.641058

random 模塊

爲何要有random模塊,有什麼用?

  • 打印(0,1)之間的數, 不會取0和1
print(random.random())
0.9112520136212495
  • 打印[n,m]的整數 # 會去n和m操作系統

    print(random.randint(1,5))
    
    1
  • 打印(n,m)的小數code

    print(random.uniform(1,5))
    
    4.66308974253497
  • 打印[n,m)的整數 取頭不取尾orm

    print(random.randrange(1,3))
    
    1

    ### 從容器中隨機選擇一個(牢記,常常用) 抽獎程序就是基於這個基礎作出來的遞歸

    res = random.choices([1,4,7,9])
    print(res)
    
    [4]

    抽獎實例:ip

    count =0
    while True:
        res = random.choices([1000,22,333,44])
        count +=500
        if count == 3000:
            print(f'恭喜你得到1000元大獎')
        else:
            if res ==1000:
                print('再來一次!')
            else:
                print(f'恭喜你得到{res}')

    從容器中隨機選擇多個(牢記,常常用)

    print(random.sample([1,2,'w','t'],2))
    [1, 'w']

    打亂容器順序(牢記)

lis = [1,2,3,4]
random.shuffle(lis)
print(lis)

[3, 1, 2, 4]

os模塊(與操做系統交互)

os模塊與操做系統交互,在python中進行文件操做

  • 建立文件夾 os.mkdir()
  • 刪除文件夾,遞歸往上刪除空文件夾 os.removedirs()
  • 刪除一個空文件夾 os.rmdir()
  • 列出文件夾全部文件名和隱藏文件名 os.listdir()
  • 刪除文件 os.remove()
  • 重命名文件名 os.rename()
  • 打印環境變量 os.envirom()
  • 添加環境變量 os.path.dirname(‘程序執行文件所在的文件夾路徑’)==重點==
  • 判斷文件是否存在 os.path.exists()
  • 拼接文件路徑(由於不一樣系統的路徑拼接符不同)os.path.join()
  • 計算文件大小 os.path.getsize()==重點==
  • 打印文件夾下全部文件夾和文件 os.walk()

sys 模塊(與python交互)

  • 查看當前文件路徑 sys.argv() ==重點==

    print(sys.argv)
    
    ['D:/pycharm學習筆記/test1/test-6-10.py']
  • 獲取解釋器版本 sys.hexversion

    print(sys.hexversion)
    50726128
  • 獲取當前文件導入模塊的路徑 sys.path ==重點==

    print(sys.path)
    
    ['D:\\pycharm學習筆記\\test1', 'D:\\pycharm學習筆記', 'D:\\python3\\python36.zip', 'D:\\python3\\DLLs', 'D:\\python3\\lib', 'D:\\python3', 'D:\\python3\\lib\\site-packages', 'D:\\pycharm\\PyCharm 2018.1.4\\helpers\\pycharm_matplotlib_backend']

json 模塊 與pickle 模塊

序列化(dump)

從內存到硬盤這個過程叫作序列化,序列化必須得規定格式

特色:

  • 持久保存狀態
  • 跨平臺交互數據(但只能存dict/list/str/int/float/bool/None)
with open('文件.json','w',encoding='utf8') as fw:
    json.dump(dict,fw)

反序列化 (load)

with open('文件.json','r',encoding='utf8') as fr:
    data = json.load(fr)

pickle

  • pickle也是序列化和反序列化,json能夠跨平臺,只支持dict/list/str/int/float/bool/None

  • pickle支持python中任意數據類型,因此不能跨平臺(不一樣平臺的函數必定是不一樣的),pickle模塊序列化過程是以==二進制==形式轉換

序列化

with open('文件.json','wb') as fw:
    pickle.dump(dict,fw)

反序列化

with open('文件.json','rb') as fr:
    data = pickle.load(fr)
相關文章
相關標籤/搜索