zoukankan      html  css  js  c++  java
  • python之模块

    模块实质就是一个python文件,文件名就是模块名,例如import.py,这个import就是模块名

    1.使用模块的好处?

    • 大大提高代码的维护性,提供代码的复用性,模块可以被其他地方引用;
    • 使用模块可以避免使用相同的变量名和函数名,相同名字的函数和变量名可分布在不同的模块中。

    也许这时,你会想如果模块名相同怎么办,这就引入包(Package)的概念,即一种组织模块的方法。

    2.包(Package)

    包是一个文件夹,是多个模块的集合。举例:有两个模块abc.py和xyz.py,如果这两个模块名与其他模块冲突,可以用包组织模块,也就是按目录存放

    引入包后,只要包名称不同,那么模块名就唯一,模块的名称为包.模块,如上图所示,mycompany.abc

    包一定要带_init_.py,不然会被当成普通的文件夹。_init_.py可以是空文件,它本身也是模块,模块名为mycompany

    3.导入模块

    导入模块实质就是把python文件拿来执行一次

    常见的导入方式有:

    import module
    import package.module#导入模块
    from module import *#导入该模块中的所有方法
    from module import fn1,fn2,fn3#导入模块中的方法fn1,fn2..
    from module import fn1 as YH #导入模块中的方法fn1,起别名为YH
    from package import module#1.OSos.rename('password')#给文件重命名

    若要a.py文件中使用m3.py中的代码,则需要在a.py中导入m3,方法有from my1 import m3

    若要使用m3中的变量,函数,可以具体指定再调用,print(m3.name)、m3.f1()

    3.1导入模块顺序

    • 先从当前目录下找这个模块
    • 在当前目录下找不到,再从python的环境变量中找

    注意:python文件名不能与模块名相同,否则会提示没有该模块。因为找模块先从当前目录找,找到一个自己创建的,没有系统自带模块中的方法,so报错了

    如何查看python的环境变量?如下图

    import sys
    # sys.path.append(r'E:\自动化测试\LYH_python\Day6作业\my1')
    print(sys.path)#查看python环境变量
    打印结果:
    ['E:\XX\Day6作业\my2',
     'E:\XX\Day6作业', 'E:\XX\python35.zip',
     'E:\XX\DLLs', 
    'E:\XX\lib', 
    'E:\XX', 
    'E:\XX\lib\site-packages', 
    'E:\XX\lib\site-packages\setuptools-23.0.0-py3.5.egg']

    如何把不存在的模块加入环境变量中?

    第一种:把找不到的模块直接放到python的lib/DLLS等安装目录下

    第二种:sys.path返回的是一个列表,可以直接把模块的目录加到环境变量中

    import sys
    sys.path.append(r'E:\自动化测试\LYH_python\Day6作业\my1')#把my1这个目录加到环境变量中
    sys.path.insert(0,r'E:\自动化测试\LYH_python\Day6作业\my1')#把my1这个目录加到环境变量最开始的位置,效率高

    第三种:选择模块的目录,右键-选择Mark Directory as -Sources Root ,自动将该目录加入环境变量中

    注意:如果将最上面一层目录Sources Root,调用下下级目录中的python文件时,要指定,Day6->my1>f1,

    import Day6 

    my1.f1#指定模块下的哪个变量或函数

    4.安装第三方模块方法

    • pip install XXXX(模块名)
    • .whl      pip install C://Users/Liuyihan(绝对路径)+XXX.whl(模块名)
    • .tar.gz  1.先解压;2解压后在命令行进入到该目录下;3执行python setup.py install

    注意:在地址栏直接输入cmd,即可直接进入到该目录下

    二、常见模块

    1.OS模块

    import os
    os.rename('password')#给文件重命名
    os.remove('password')#删除文件
    print(os.getcwd())#获取当前目录
    print(os.rmdir('china'))#删除指定文件夹
    os.mkdir('china/beijing')#创建一个文件夹,文件夹名称是字符串,mkdir不能创建父级不存在的多层文件夹,会报错
    os.makedirs('china/beijing')#递归创建目录,父目录不存在时自动创建父目录
    os.removedirs('china/beijing')#只能删除空目录
    print(os.listdir('d:\'))#列出指定目录下的所有文件,且返回一个list
    print(os.listdir())#不指定目录,默认列出当前目录下的所有文件
    os.system('dir')#执行操作系统的命令,但不能获取到结果
    res=os.popen("ipconfig").read()#执行操作系统的命令,可以获取到结果
     print(res)
    print(os.path.isdir('china'))#判断是否是文件夹
    print(os.path.isfile('user.txt'))#判断是否是文件
    print(os.path.exists('user.txt'))#判断文件或文件夹是否存在
    print(os.path.join('china','beijing','海淀','a.py'))#自动识别系统,windows或linux,自动连接好路径
    res=os.path.split(r'chinaeijing海淀a.py')#r表示把路径中的不要当成转义字符,将路径分隔显示

     以下程序,学习下os.walk()

    #第一种
    res=os.walk("china")#一层一层将里面的文件,文件夹列出来,返回一个list
    for cur_path,dir,file in res:
        print('当前目录:',cur_path)
        print('当前目录下的所有文件夹:',dir)
        print('当前目录下的所有文件',file)
        print('=========================')
    # 第二种 找到china目录下的有多少个json文件
    res=os.walk("china")#一层一层将里面的文件,文件夹列出来,返回一个list
    count=0
    for cur_path,dir,file in res:
        for f in file:
            if f.endswith('.json'):
                count+=1
    print(count)
    # 第三种 判断某个文件是不是在某目录下
    def find_files(path,keyword):
        res=os.walk(path)
        for cur_path,dirs,files in res:
            for file_name in files:
                if keyword in file_name:
                    print("该文件在该目录下")

     2.Random模块

    import random
    print(random.randint(100000,999999)) #随机取一个整数
    print(random.uniform(1,900))#取一个小数
    stus = ['xiaojun','hailong','yangfan','tanailing','yangyue','cc']
    print(random.choice('abcdefg'))#随机取一个元素,返回一个字符串或int
    print(random.sample(stus,2)) #从一个序列(字符串或列表)中随机取N个元素,返回的是一个list
    print(random.sample(stus,2)) #从一个序列(字符串或列表)中随机取N个元素,返回的是一个list
    print(random.shuffle(l))#洗牌,这个就只能传list了

    3.Time模块

    import time
    res=time.strftime('%Y%m%d %H:%M:%S')#取当前的格式化日期
    res=time.time()#获取当前日期时间戳,默认精确到毫秒,可以转int,可以获取整数
    print(res)
    #格式化时间和时间戳相互转化,都必须先转化成时间元组
    time_tuple=time.strptime('1992-01-02','%Y-%m-%d')
    print(time.mktime(time_tuple))#mktime参数是结构化时间或完整的9位元素元组,返回用秒来表示时间的浮点数
    #将格式化时间转化成时间戳的函数
    # #不传参数,取当前时间戳
    def str_to_timestamp(time_str=None,format='%Y%m%d %H%M%S'):
        if time_str:
            time_tuple=time.strptime(time_str,format)
            timestamp=time.mktime(time_tuple)
        else:
            timestamp=int(time.time())
        return int(timestamp)
    
    # print(str_to_timestamp())
    # print(str_to_timestamp('20391123 175123'))
    print(str_to_timestamp('2018-10-03','%Y-%m-%d'))
    
    res=time.gmtime(time.time())#将时间戳转化成时间元组,标准时区、
    res=time.localtime(time.time())#将当前时间戳转化成时间元组,取当前时区
    res2=time.strftime('%Y-%m-%d %H:%M:%S',res)#将时间元组转化成格式化时间
    print(res2)
    
    # #将时间戳转化成格式化时间的函数
    # #如果没有传参数,就取当前格式化时间
    def timestamp_to_str(timestamp=None,format='%Y%m%d %H:%M:%S'):
        if timestamp:
            time_tuple=time.localtime(timestamp)
            str_time=time.strftime(format,time_tuple)
        else:
            str_time=time.strftime(format)
        return str_time
  • 相关阅读:
    platform cannot apply stanford theme
    汉化、用户创建
    修改字段
    语言包格式错误引起组件崩溃
    配置LMS/Studio SMTP
    Javascript如何实现AOP
    【转】组件化的Web王国
    【转】前端组件化框架之路
    【转】ES6 手册
    【转】超实用的JavaScript技巧及最佳实践
  • 原文地址:https://www.cnblogs.com/balllyh/p/9716256.html
Copyright © 2011-2022 走看看