• 模块


    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


  • 相关阅读:
    UltraWebGrid多表头
    2009个人年度总结报告(IT)
    DevExpress分发
    AspxTreeList数据绑定以及模板和外观定制的运用
    每日一句英语:No problem, Mr. Smith. Anything else?
    “向程序发送命令时出现问题”的解决方法
    ASP常用进制转化类(2,8,10,16,32,64)
    我的分页用户控件(性能问题)
    研发的那些事2—设计之惑
    一个架构的演化2用ESB集成
  • 原文地址:https://www.cnblogs.com/l729414559/p/6876957.html
Copyright © 2020-2023  润新知