美文网首页
12 自定义包的实现[python基础]

12 自定义包的实现[python基础]

作者: 乱弹琴给 | 来源:发表于2019-12-29 08:15 被阅读0次

虚拟环境-virtualenv

  • pip install virtualenv

  • 进入/退出虚拟环境: activate/deactivate

      ![image.png](https://img.haomeiwen.com/i10345717/01ccf8913a59c01f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
        //建立目录,虚拟出需要的环境,比如django1.11,会把需要的python,setuptools,pip,wheel等工具放到环境中.
    

//进入Scripts目录

cd scripts

activate //(django1.11) C:\envs\django1.11\scripts

        pip install django==1.11  //在虚拟环境中安装django1.11

deactivate.bat //退出虚拟环境

//注意,如果想在虚拟环境中安装包,一定要先activate进入这个环境,出现(虚拟环境名),不是进入目录,不然会安装在真是的python环境中.

  • pip install virtualenvwrapper-win

    //安装这个包要在真是的python环境中安装,安装这个就可以在各虚拟环境中自由切换.如下.注意:首先要把创建的虚拟环境保存目录C:/envs 加入到WINDOWS用户环境变量中,变量名:WORKON_HOME  变量值:C:\envs
    
  • workon vname

workon flask和workon django1.11 自由切换

///////以上虚拟环境的操作都是针对控制台命令行的,如果要在开发工具中使用虚拟环境,需要在工具中设置,比如Pycharm中

//在settings中,查找Interpreter>>project interpreter:选择show all ,下面有虚拟环境配置选项,可以在这里增加或者使用现有的环境,都是可以的. 然后在RUN的时候,就可以在上面选择框中点击edit configurations选择运行的虚拟环境就可以了.

实战-实现自己的工具包

  • ​包含trans和work两个包

        //trans>>tools 实现一个交易ID
    

from datetime import datetime

import randint

//根据所传入的时间得到一个唯一的交易流水ID

           def gen_trans_id(date = None):

//Charm中三个双引号回车,会帮助我们建立注释文档

if date is None:

date = datetime.now()

//怎样保证字符串的唯一,日期+时间+毫秒+随机数(6位)

return date.strftime('%Y%m%d%H%M%S%f') + str(random.randint(100000,999999)) //生成6位随机数

//或者用下面format方式,不用强制转换random

           return '{0}{1}'.format(date.strftime('%Y%m%d%H%M%S%f'),random.randint(100000,999999)) 
  • 两个包都有同样的tools模块

        import os.path
    

import constants

        //建立一个work工具包目录,建立一个tools.py文件

def get_file_type(file_name):

//根据文件名称判断文件类型,file_name是str,return int,0是图片,1是word文档,2...excel.3...

//默认文件是未知类型

result=constants.FILE_TYPE_UNKNOWN

if not os.path.isfile(file_name): //文件需真是存在,否则返回false

return result

path_name,ext = os.path.splitext(file_name) //得到一个元组

//将文件的后缀名统一成小写

ext = ext.lower()

if ext in('.png','.jgp','.gif','.jpge',,,,):

            result = constants.FILE_TYPE_IMG

elif ext in('','','',''):

            result = constants.FILE_TYPE_DOC

        elif ext in('','','',''):

            result = constants.FILE_TYPE_EXL

        elif ext in('','','',''):

            result = constants.FILE_TYPE_PPT

return result

        //注意,如果要把目录当成一个包使用,就要加入_init_.py文件,如果不加,只能当一个目录使用,需要引用到具体的模块
  • 包含constants常量模块

       // 建立一个常量模块constants,存放静态常量.减少代码修改量
    

FILE_TYPE_IMG = 10 //常量一般用大写

FILE_TYPE_DOC = 11 //word文档

        FILE_TYPE_EXL = 12  //EXCEL文档

        FILE_TYPE_PPT = 13  //PPT文档

        FILE_TYPE_UNKNOWN = 14  //未知文档
  • 模块中会引用常量模块提供的常量值

  • 在测试模块中可以分别调用tools相关方法

        //建一个测试模块,对tools进行测试test_module.py
    
        from datetime import datetime
    
        from trans import tools as trans_tools
    
        from work import tools as work_tools
    
        def test_trans_tool():
    
            id1 = trans_tools.gen_trans_id()
    
            print(id1)
    
            date = datetime(2015,10,2,12,30,45)
    
            id2 = trans_tools.gen_grans_id(date)
    
            print(id2)
    
        def test_work_tool():
    

file_name = 'c:\users\yimal\desktop\test.JPG' //必须真是存在,否则返回false

rest = work_tools.get_file_type(file_name)

print(rest)

        if __name__ == '__main__':

                test_trans_tool()

                test_work_tool()

相关文章

网友评论

      本文标题:12 自定义包的实现[python基础]

      本文链接:https://www.haomeiwen.com/subject/gwxyoctx.html