模塊
模塊分類
- 自定義模塊
- 內置模塊
- 第三發(fā)模塊
# 內置模塊
userName = input('please input your name:')
passWord = getpass.getpass('please input your password:')
print(userName, passWord)
模塊概述
- 并不需要所有功能都自己完成喊儡,引用別人的模塊來實現(xiàn)已有的功能
- python有非常豐富的庫文件敬察,內置300多個庫
- 一個庫文件包含多個模塊
python常用的模塊
-
time:作為時間戳,時間轉換,休眠等
- time.sleep(second):休眠
- time.time():時間戳
- time.ctime:字符串格式時間
- time.ctime(time):格式化時間
- time.gmtime():年月日時分秒分開的對象
import time timeNow = time.time() print(timeNow) # 從1970年1月1日到現(xiàn)在過了多少秒 ctime = time.ctime() print(ctime) # Tue May 2 19:12:08 2017 ctime = time.ctime(timeNow - 60 * 60 * 24) print(ctime) # Tue May 2 19:10:35 2017 gmtime = time.gmtime() print(gmtime) # time.struct_time(tm_year=2017, tm_mon=5, tm_mday=2, tm_hour=11, tm_min=19, tm_sec=44, tm_wday=1, tm_yday=122, tm_isdst=0) print('%s-%s-%s' % (gmtime[0], gmtime[1], gmtime[2])) # 2017-5-2 localtime = time.localtime() print(localtime) # time.struct_time(tm_year=2017, tm_mon=5, tm_mday=2, tm_hour=19, tm_min=37, tm_sec=26, tm_wday=1, tm_yday=122, tm_isdst=0) localtime = time.localtime(time.time()) print(localtime) # 同上 mktime = time.mktime(time.localtime()) print(mktime) # 將時間對象轉為時間戳 print(time.strftime('%Y-%m-%d %H-%M-%s', time.localtime())) # 格式化 print(time.strptime('2016-01-08', '%Y-%m-%d')) # 將時間轉時間對象
datatime:
import datetime
import time
print(datetime.datetime.today(), 'today') # 2017-05-03 09:34:41.340311 today
print(datetime.datetime.fromtimestamp(time.time()), 'from time stamp') # 2017-05-03 09:34:41.340482 from time stamp
print(datetime.datetime.now(), 'now') # 2017-05-03 09:34:41.340503 now
# 以后常用到的方法:
data = datetime.datetime.now() - datetime.timedelta(days=10) # 前10天
print(data)
-
sys:關于python解析器的一些操作
- sys.argv:terminal執(zhí)行python文件時帶的參數(shù)
- 使用場景:獲取解析器解析py文件時傳入的參數(shù),根據(jù)不同的參數(shù)執(zhí)行不同的函數(shù),以后經(jīng)常用作執(zhí)行腳本
- 多個參數(shù)之間用空格分開,argv最少有一個參數(shù)环形,默認為文件名.py
- sys.path:庫/模塊文件的搜索路徑,默認先在自己項目里面搜衙傀,然后再去內置模塊里搜抬吟,最后去第三發(fā)模塊下搜(site-package)
- 不在同一個目錄下的模塊不能導入,如果想像內置模塊那樣引用统抬,在哪個位置都可以倒入火本,則可以把py文件放在site-package文件夾下
- 或者將py文件的路徑添加到sys.path(列表)里面
- sys.exit(num) # 0==正常退出
- sys.maxint():最大整數(shù)
- sys.version:python解析器版本
- sys.platform:平臺版本
- sys.stdout.write():向屏幕輸出危队,進度條
import sys import time def showProgress(cur, total): time.sleep(0.1) sys.stdout.write("\r%4d%% %s"%(100 if cur == total -1 else cur * 100 // total, '-' * cur)) total = 100 for i in range(total): showProgress(i, total)
- sys.argv:terminal執(zhí)行python文件時帶的參數(shù)
-
pickle
- 我們把數(shù)據(jù)存儲在字典(dict)里便于管理,當我們想要把字典里的數(shù)據(jù)持久化(保存到本地)時钙畔,python不支持直接把字典寫到文件里茫陆,會報錯:
dic = { 'name':'yhh', 'age':'25', 'gender':'nan' } with open('xxx.txt', mode='w') as file: file.write(dic) # TypeError: write() argument must be str, not dict print('finish')
- 此時我們需要借助python的pickle模塊將字典進行序列化和反序列化
import pickle dic = { 'name':'yhh', 'age':'25', 'gender':'nan' } with open('xxx.txt', mode='rb') as file: p = pickle.dumps(dic) file.write(p) with open('xxx.txt', mode='rb') as file: b = file.read() dic = pickle.loads(b) print(dic) # {'age': '25', 'name': 'yhh', 'gender': 'nan'}
-
pickle的方法:
- load():直接讀取文件
- loads():從內存中讀取字節(jié)內容(先從文件中讀取,再傳入load方法中)
- dump():直接寫到文件里
- dumps():先轉換成字節(jié)擎析,然后自己手動寫入文件里面
with open('xxx.txt',mode='wb') as file: pickle.dump(dic, file)
-
json
- 和pickle一樣是操作字典簿盅,但是不一樣的是dumps的到的結果是json字符串,而不是序列化后的字節(jié)
- josn和pickle用的api一樣
import json dic = { 'name':'yhh', 'age':'25', 'gender':'nan' } jsonStr = json.dumps(dic) print(jsonStr) # {"gender": "nan", "name": "yhh", "age": "25"}
-
json和pickle區(qū)別
- json一般用于網(wǎng)絡通信的json字符串和dict對象之間的轉換揍魂,dict對象便于修改和獲取數(shù)據(jù)
- pickle用于數(shù)據(jù)的序列化和用于持久化
- json不是所有的格式都可以轉換挪鹏,例如時間格式轉換的時候會報錯,必須是嚴格的json格式
- pickle對于任何格式的數(shù)據(jù)都可以序列化愉烙,比json強大,但是數(shù)據(jù)不能進行網(wǎng)絡通信
安裝外部框架
- 在python安裝目錄下解取,cd script
- pip.exe install django
- pip.exe uninstall django