python中常用的導包的方法
導入包和包名的方法:1、import package.module
2、from package.module import *
例一:
#second.py def register(): print('this is a register page')
#first.py頁面調用registe()方法時 #1、 import zero.second zero.second.register() #2、 from zero.second import * register()
輸出結果:
例二:
#func.py def logout(): print('this is a logout function') class Logout(object): def profile(self): #實例化 print('this is a profile method')
#second.py def register(): print('this is a register page')
常用的導包方式:1、from package.modlue import *
2、from package.package.modlue import *
from zero.first import login from zero.second import register from zero.one.func import logout,Logout
#導入包后,可直接調用下面的方法,來獲取這些方法里面的內容 login() register() logout() obj=Logout() obj.profile()
輸出結果:
sys庫實戰
PS:有時候導入包以后,還是會提示報錯,提示找不到路徑,用一下的方法解決:
import sys import os '''提示first的模塊不存在,找不到錯誤的解決方案''' base_dir=os.path.dirname(os.path.dirname(__file__)) #先定義base_dir,輸出D:\code\testDev\zero路徑 sys.path.append(os.path.join(base_dir,'zero')) for item in sys.path: print(item) from first import login login()
輸出結果:
常用的庫:
1、json庫的應用
在python中,序列化:把python的數據類型(字典、元組、列表)轉為str的數據類型;
反序列化:把str的數據類型轉為python對象的過程。
序列化和反序列化在列表、元組和字典中的應用:
列表:
import json lists=[1,2,3,4] #序列化 list_str=json.dumps(lists) ##先對lists進行序列化list_str print('內容:',list_str,'序列化后的列表類型:',type(list_str)) #反序列化 str_list=json.loads(list_str) ##再對list_str進行反序列化str_list print('內容:',str_list,'反序列化后的列表類型:',type(str_list))
輸出結果(輸出的內容可能看不出來效果,通過type()查看數據類型就可以看出區別):
元組:
import json
tuple1=(1,2,3,4) #序列化 tuple_str=json.dumps(tuple1) #格式化的時候 print('內容:',tuple_str,'序列化后的列表類型:',type(tuple_str)) # #反序列化 str_tuple=json.loads(tuple_str) print('內容:',str_tuple,'序列化后的列表類型:',type(str_tuple))
輸出結果(輸出的內容可能看不出來效果,通過type()查看數據類型就可以看出區別):
字典:
import json dict1={'name':'lyl','age':18} # #序列化 dict_str=json.dumps(dict1) print('內容:',dict_str,'序列化后的列表類型:',type(dict_str)) # #反序列化 str_dict=json.loads(dict_str) print('內容:',str_dict,'序列化后的列表類型:',type(str_dict))
輸出結果(雙引號和單引號並不能說明數據類型的轉變,通過type()查看數據類型):
dump():把目標數據寫到文件里面
load():從文件里面讀取數據
import json
dict1={'name':'lyl','age':18,'address':'xian'}
#把dict1的內容用w模式寫到log.md里面, json.dump(dict1,open('log.md','w')) #讀取log.md里面的內容 print(json.load(open('log.md','r')))
輸出結果:
2、os庫實戰:
os是針對:1、命令行處理
2、路徑處理
1)、命令行處理:
import json print('獲取當前的路徑:',os.getcwd()) #查看tomcat端口是不是被占用,當然首先要啟動端口,不啟動端口不用端口就不存在占用的問題。 print(os.system('netstat -ano | findstr "8080"')) #netstat -ano | findstr "8080"這個命令可以直接再cmd中打開
輸出結果:
2)、路徑處理
(1)獲取路徑
import os '''獲取路徑 os.path.dirname()''' #獲取D:\code\testDev\zero路徑 print(os.path.dirname(__file__)) #獲取D:\code\testDev路徑 print(os.path.dirname(os.path.dirname(__file__))) #獲取D:\code路徑 print(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
輸出結果:
(2)路徑的拼接(login.json在別的文件夾下面):
import os '''路徑拼接 os.path.join()''' base_dir=os.path.dirname(os.path.dirname(__file__)) print(os.path.join(base_dir,'data','login.json'))
print('判斷是否是文件:',os.path.isfile('D:/code/mysql/utils/')) #os.path.isfile()針對文件路徑 print('判斷是否是目錄:',os.path.exists('D:/code/mysql/utils/yamlUtils.py')) #os.path.exists()針對具體的文件
輸出的結果:
3、hashlib庫實戰
hashlib是設計安全散列和消息摘要,提供多個不同的加密算的接口,如:SHA1、SHA224、SHA256、SHA384、SHA512、MD5等。
針對---字符串的基本用法:
import hashlib
m=hashlib.md5() m.update('heiheihei'.encode('utf-8')) print(m.hexdigest())#返回十六進制數字字符串
輸出結果:
針對---字典加密的用法:
from urllib import parse import hashlib import time def sign(): dict1={'name':'lyl','age':18,'sex':'girl','address':'xian','time':time.time()} #'time':time.time()不加時間每次的加密那個數字都一樣,加了時間就每次加密不一樣。 data=sorted(dict1.items(),key=lambda item:item[0]) data1=parse.urlencode(data) #加密 m=hashlib.md5() #創建hash對象,md5(message-Digest Algorithm 5):消息摘要算法,得出一個128位的密文 m.update(data1.encode('utf-8')) #更新data1對象以字符串參數的形式 print(m.hexdigest()) #返回十六進制數字字符串 sign()
輸出結果: