模块

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)
View Code


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()
View Code

  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")
View Code

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")
View Code

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
View Code


原文地址:https://www.cnblogs.com/l729414559/p/6876957.html