模块
python模块介绍:
#时间模块
# time &datetime
#随机数模块
#random
#调用交互模块
#os
#sys模块
#sys
#文件copy模块
#shutil
#shelve模块
#xml处理
#yaml处理
#configparser模块
#hashlib模块
#subprocess模块
#logging模块
#json和pickle模块
1 #coding:utf-8 2 3 #pickle不止可以序列化dict,它可以支持函数,类,等等都可以被序列化 4 import pickle 5 with open("user.txt",'wb') as f: #pickle写入需要以二进制格式 6 data = {"name":"eric","age":"18","addr":"bj"} 7 #f.write(data) #TypeError: a bytes-like object is required, not 'dict' 8 f.write(pickle._dumps(data)) #序列化后存储到文件 9 10 with open("user.txt",'rb') as f: 11 file = f.read() 12 file_conver = pickle.loads(file) #读取文件,序列化解析成dict格式 13 print(file_conver) 14 15 #json 16 #json和pickle其实是一样的 17 import json 18 with open("user.txt",'w') as f: #json写入以字符串格式 19 data = {"name":"eric","age":"18","addr":"bj"} 20 f.write(json.dumps(data)) 21 22 with open("user.txt",'r') as f: 23 file = f.read() 24 file_conver = json.loads(file) 25 print(file_conver)
Python3在不同目录之间的模块导入
在每个目录中创建一个空白的__init__.py文件,则变成了一个包,包里面的文件在Python中能互相调用
一个简单的web框架示例:
说明:
1.在项目最上层,主入口文件main.py
2.后端文件backend包含两部分:
2.1:db数据库配置文件
2.2:logic逻辑判断
3.主配置文件config
4.前端文件front-end
例子:
1.入口文件main.py调用后端logic的index()和home()两个函数,实现相关功能
#coding:utf-8 #调用同级目录模块下面的模块 from backend.logic.view import * index() home()
2.后端函数home()中又调用了db包里面的模块
1 #coding:utf-8 2 3 4 #返回上两级目录 5 """ 6 import os,sys 7 ''' 8 说明: 9 os.path.abspath(__file__) #显示当前文件绝对路径 10 os.path.dirname(os.path.abspath(__file__)) #os.path.dirname去掉路径最后一个"/"后面的内容 11 ''' 12 first_floor = os.path.abspath(__file__) #第一层 13 second_floor= os.path.dirname(os.path.abspath(__file__)) #第二层 14 basedir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #第三层 15 sys.path.append(basedir) #把第三层目录加入环境变量 16 print("第一层:%s"%first_floor) 17 print("第二层:%s"%second_floor) 18 print("第三层:%s"%basedir) 19 """ 20 21 #调用上级目录里面其他目录模块 22 import sys 23 basedir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 24 sys.path.append(basedir) 25 from backend.db.sql_api import select #导入上层db包中的sql_api中的select方法 26 27 def home(): 28 print("welcom to home") 29 q_data = select("user","d") #查询db 30 print(q_data) 31 32 def index(): 33 print("welcome to index")
3.db包中的sql_api函数又调用了config包中的settings模块
1 #coding:utf-8 2 import sys 3 4 #导入settings里面db的验证信息 5 from config import settings 6 7 def select(table,column): 8 if settings.db_auth(settings.DATABASE) == True: #判断settings中对数据库的连接验证信息是否正确 9 if table == 'user': 10 user_info ={ 11 "001":['eric',22,'engineer'], 12 "002":['alex',24,'enginerr'], 13 "003":['tim',30,'kaiche'], 14 } 15 return user_info 16 else: 17 print("Database Verification is not Successful")
4.config中的setting模块中是整个web框架的配置信息,其中db_auth函数是对数据库做验证用的
1 #coding:utf-8 2 3 #DB连接信息 4 DATABASE = { 5 "engine":"mysql", 6 "host":"localhost", 7 "port":3306, 8 "user":"root", 9 "password":"123456" 10 } 11 12 #判断连接是否成功 13 def db_auth(database): 14 if database["user"] == "root" and database["password"] == "123456": 15 #print("db authentication passed!") 16 return True