zoukankan      html  css  js  c++  java
  • 【Python学习】常用模块

    一、模块&包

    1、模块

      模块实质上就是一个Python文件,它是用来组织代码的。意思就是把Python代码写在里面,文件名就是模块的名称。例如:random.py,random就是模块的名称。

    2、包

      包又叫pageage,本质就是一个文件夹,和文件夹不一样的地方是它有一个__init__.py文件。包是从逻辑上来组织模块的,也就是说它是用来存放模块的。如果想导入其他目录下的模块,那么这个目录必须是一个包才能导入。

    二、模块的分类

    1、标准模块、标准包

      Python自带的标准模块,直接import就能使用

      例如:import string,random,datatime,json,os等

    2、第三方模块

      别人写好的一些模块,需要安装才能使用。

      想要实现某个功能,可以先用百度搜索一下有没有第三方模块

    3、自己写的Python文件

    三、第三方模块的安装

    1、傻瓜式的

      (1)在命令行窗口直接输入:pip install pymysql(Python已加入环境变量)

      pip在Python3.4以上的版本是自带的。但这种方式需要保证pycharm中的Project Interpreter路径是Python安装路径,否则即使窗口显示下载安装成功,依然不能成功import。因为在命令窗口下载下来的第三方包是存储在Python安装路径python3Libsite-packages下的,而pycharm import时,是从pycharm→File→Settings→Project Interpreter→设置的路径下PythonPython36Libsite-packages去取第三方安装包的。

      (2)若提示“pip命令不存在”

          把Python安装目录下的Script目录的路劲加入到环境变量再执行pip命令

      (3)若提示“Unknown or unsupported command 'install'”

          a、打开 C:strawberryperlin

          b、把这个目录下的pip 都改成其他的名字

      (4)也可以直接在pycharm中安装第三方模块,这样安装的模块直接装在Project Interpreter→设置的路径下PythonPython36Libsite-packages下,可以直接使用

    如下图: 

    2、手动安装

      (1)安装whl结尾的安装包

        shift+右键,在此处打开命令行窗口(或者在地址栏中直接输入cmd)

        pip install redis-2.10.6-py2.py3-none-any.whl

      (2)安装tar.gz结尾的安装包

        a、解压这个安装包

        b、进入到这个解压之后的文件夹中

        c、在命令行中输入:python setup.py install

    3、卸载模块

      pip uninstall pymysql

    四、模块导入的顺序、实质

    1、Python模块导入的顺序

      (1)从当前目录下查找

      (2)从Python环境变量中查找

    2、导入模块的实质

      把Python文件从头到尾执行一遍

    3、导入当前目录下的Python文件(模块)

    (1)第一种方式:   

    1 import test
    2 a = test.name  # 调用test文件中的name变量
    3 test.my()      # 调用test文件中的my()函数

    (2)第二种方式

    1 from test import my,name
    2 a = name  # 调用name变量
    3 my()      # 调用my函数

    4、导入其他目录下的Python文件(模块)

    (1)先把存放Python文件(模块)的目录加入环境变量

    1 # 先把目录加入环境变量再导入
    2 import sys
    3 sys.path.insert(0,'E:PythonScript')  # 插到环境变量最前面,效率高

    (2)导入Python文件(模块)

    1 import test  # 导入test模块
    2 a = name     # 调用name变量
    3 my()         # 调用my函数

    当前目录下和环境变量下都有同一个文件时,会优先选择当前目录下的文件

    常用模块

    一、string模块

    复制代码
    1 import string
    2 print(string.ascii_letters)    # 所有大小写字母
    3 print(string.ascii_lowercase)  # 所有小写字母
    4 print(string.ascii_uppercase)  # 所有大写字母
    5 print(string.digits)           # 所有数字
    6 print(string.punctuation)      # 所有特殊标点符号
    7 print(string.printable)        # 数字+字母+特殊字符
    复制代码

    二、random模块

    复制代码
    1 import random,string
    2 pickts = ['A','J','Q','K',2,3,4,5,6]
    3 random.shuffle(pickts)                    # 洗牌,打乱顺序(只能传list)
    4 print(pickts)
    5 print(random.randint(1,10))               # 随机取1到10之间的整数
    6 print(round(random.uniform(1,99),2))      # 随机取1到99之间的小数,小数点后保留2位小数
    7 print(random.choice([1,2,3,4]))           # 随机取数组当中的1个元素
    8 print(random.sample(string.printable,5))  # 随机取N个元素,返回的是list
    复制代码

    三、sys模块

    复制代码
     1 import sys
     2 print(sys.platform)          # 判断是什么操作系统
     3 sys.path.append(BASEPATH)    # 将BASEPATH插到环境变量最后
     4 sys.path.insert(0,BASEPATH)  # 将BASEPATH插到环境变量最前面,效率高
     5 print(sys.path)              # Python的环境变量
     6 print(sys.version)           #获取Python解释程序的版本信息
     7 print(sys.argv)  # 用来获取命令行里面运行python文件的时候传入的参数,它返回的是一个list
     8 # 它默认就有一个参数,就是当前文件的文件名,如果运行的命令在该python文件名后还带有参数则该参数也会加入返回的list当中
     9 # 在命令行中输入:python sys模块.py --help
    10 # 返回:['sys模块.py', '--help']
    复制代码

     下面写一段程序来说明sys.argv的作用

      1、它是用来获取命令行里面运行python文件的时候传入的参数
      2、它返回的是一个list
      3、这个list默认就有一个参数,就是当前的这个文件名

    复制代码
     1 import sys
     2 command = sys.argv
     3 print(command)
     4 if len(command) > 1:
     5     cmd1 = command[1]
     6     if cmd1 == '--help':
     7         print('这是个帮助文档'
     8               '这个python文件是用来说明sys.argv的作用')
     9     elif cmd1 == 'os':
    10         print('当前的操作系统是%s'%sys.platform)
    11     else:
    12         print('输入命令有误')
    13 else:
    14     print('运行python文件的时候需要传入一个参数,'
    15           'e.g:'
    16           'python xx.py install'
    17           )
    18 # 输入命令:python tools.py --help
    19 # 返回:['tools.py', '--help']  这是个帮助文档这个python文件是用来说明sys.argv的作用
    20 # 输入命令:python tools.py os
    21 # 返回:['tools.py', '--help']  当前的操作系统是win32
    22 # 输入命令:python tools.py
    23 # 返回:['tools.py']  运行python文件的时候需要传入一个参数,e.g:python xx.py install
    复制代码

    四、os模块

    复制代码
     1 # 对操作系统的一些操作
     2 import os
     3 print(os.getcwd())          # 获取当前目录
     4 os.chmod('/usr/local',777)  # 给文件或目录加权限,一般用于linux操作系统(1执行2写4读)
     5 print(os.chdir('../'))      # 更改目录,可以填相对路径和绝对路径(与Linux一样),没有返回值
     6 print(os.makedirs('niuniu/python'))      # 递归创建目录,父目录不存在时会自动创建,可创建多层目录
     7 print(os.mkdir('nhy'))      # 创建目录,父目录不存在会报错,只能创建一级目录
     8 print(os.removedirs('niuniu/python'))    # 递归删除目录,只能删除空目录
     9 print(os.rmdir('nhy'))      # 删除指定目录,只能删除空目录
    10 print(os.remove('test.py')) # 删除文件,只能删除文件
    11 print(os.listdir('e:\'))   # 列出目录下的所有文件和目录,放在一个list里面
    12 print(os.rename('test','test1'))         # 重命名
    13 print(os.stat('day6.py'))   # 获取文件信息
    14 print(os.sep)      # 根据当前操作系统自动生成路径分隔符
    15 print('day6'+os.sep+'x.py') # 拼路径
    16 print(os.linesep)  # 当前操作系统的换行符
    17 print(os.pathsep)  # 当前系统环境变量中每个路径的分隔符,linux是冒号,Windows是分号
    18 print(os.environ)  # 当前系统的环境变量
    19 print(os.name)     # 当前系统名称,Windows是nt,Linux是posix
    20 print(os.system('dir'))             # 执行操作系统命令,获取不到结果(返回的是0执行成功或1执行失败)
    21 print(os.popen('ipconfig').read())  # 执行操作系统命令,能获取到命令执行的结果
    22 print(os.path.abspath('.'))         # 获取当前目录的绝对路径
    23 print(os.path.abspath(__file__))    # 获取到当前文件的绝对路径
    24 print(os.path.split('E:Pycharm_Workspaceday6.py'))        # 分割路径和文件名,返回的是一个元组,第一个元素是路径,第二个元素是文件名
    25 print(os.path.dirname('E:Pycharm_WorkspacePython-code'))  # 获取父目录,获取它的上一级目录
    26 print(os.path.basename('/usr/local/test.txt'))              # 获取路径的最后一级,如果是文件则显示文件
    27 print(os.path.exists('E:Pycharm_WorkspacePython-code'))   # 判断目录/文件是否存在
    28 print(os.path.isabs('./'))           # 判断是否绝对路径
    29 print(os.path.isfile('E:day6.py'))  # 判断是否是一个文件,判断文件是否存在
    30 print(os.path.isdir('E:day6'))      # 判断是否是一个目录,判断目录是否存在
    31 print(os.path.getsize('E:Pycharm_WorkspacePython-codeday6day6.py'))  # 获取文件的大小
    32 print(os.path.join(r'usr','local','tomcat','logs'))  # 拼接成一个路径
    33 os.walk('E:Pycharm_Workspace')      # 遍历目录,列出目录下所有的目录和文件,一层一层下去
    34 # 循环三个变量,分别代表路径、目录和文件
    35     # abs_path 当前循环的绝对路径
    36     # dir      目录下面的所有文件夹
    37     # file     目录下的所有文件
    38 for abs_path,dir,file in os.walk(r'E:Pycharm_WorkspacePython-codeday6	est'):
    39     print(abs_path,dir,file)
    复制代码

    练习一:在logs目录下创建子目录及在各目录下创建相关日志文件

    复制代码
     1 import datetime,os
     2 dirs = ['tomcat','nigix','apache','python','app','android','ios']
     3 base_path = 'E:logs'
     4 os.chdir(base_path)
     5 for d in dirs:
     6     os.mkdir(d)
     7     os.chdir(d)
     8     for i in range(10):
     9         t = datetime.date.today() + datetime.timedelta(days=-i)
    10         name = '%s_%s.log'%(d,t)
    11         open(name,'w',encoding='utf-8')
    12     os.chdir('../')
    复制代码

    练习二:往日期为双数的日志文件中写内容

    复制代码
    1 import os
    2 for abs_path,dir,file in os.walk('E:logs'):
    3     for f in file:
    4         day = f.split('.')[0].split('-')[-1]
    5         if int(day)%2 == 0:
    6             file_name = os.path.join(abs_path,f)  # 拼接绝对路径
    7             open(file_name,'w',encoding='utf-8').write('测试中')
    复制代码

    五、time模块 

    1、基本用法:

    复制代码
    1 import time
    2 print(time.time())       # 获取当前时间戳:从unix元年到现在过了多少秒
    3 print(time.gmtime())     # 取标准时区的时间(比中国时间慢8小时),返回的是时间元组
    4 print(time.localtime())  # 取当前时区的时间,返回的是时间元组
    5 print(time.strftime('%Y-%m-%d'))  # 获取格式化好的时间,格式可以自己定义
    6 print(time.strftime('%Y-%m-%d %H:%M:%S'))
    7 print(time.strftime('%Y%m%d%H%M%S'))
    8 # Y:年,m:月,d:日,H:时,M:分,S:秒
    9 time.sleep(5)  # 等待时间5秒
    复制代码

    2、把时间戳转换成格式化好的时间:

      a、先把时间戳转换成时间元组

      b、再把时间元组转换成格式化好的时间

    1 import time
    2 f = time.time()       # 获取当前时间戳
    3 s = time.localtime(f) # 把时间戳转换成时间元组
    4 m = time.strftime('%Y-%m-%d %H:%M:%S',s)  # 把时间元组转换成格式化时间
    5 print(m)

    定义函数:把时间戳转换成格式化好的时间函数

      a、不传入时间戳的话,返回当前格式化好的时间

      b、传入时间的话,把时间戳转换成格式化好的时间并返回

    复制代码
     1 def timestamp_to_fomat(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
     2     if timestamp:
     3         time_tuple = time.localtime(timestamp)
     4         res = time.strftime(format,time_tuple)
     5     else:
     6         res = time.strftime(format)  # 默认取当前时间
     7     return res
     8 print(timestamp_to_fomat())
     9 print(timestamp_to_fomat(1224398473))
    10 print(timestamp_to_fomat(1224398473,'%Y-%m-%d'))
    复制代码

    3、把格式化好的时间转换成时间戳:

      a、先把格式化好的时间转换成时间元组

      b、再把时间元组转换成时间戳

    1 import time
    2 m = '2017-1-1 18:20:11'  # 定义格式化好的时间
    3 p = time.strptime(m,'%Y-%m-%d %H:%M:%S')  # 把格式化好的时间转换成时间元组
    4 s = time.mktime(p)  # 把时间元组转换成时间戳
    5 print(s)

    定义函数:把格式化好的时间转换成时间戳函数

      a、不传入格式化好的时间的话,返回当前时间戳

      b、传入格式化好的时间的话,把格式化好的时间转换成时间戳并返回

    复制代码
     1 def strToTimestamp(str=None,format='%Y-%m-%d %H:%M:%S'):
     2     if str:  # 如果传了时间
     3         tp = time.strptime(str,format)  # 转成时间元组
     4         res = time.mktime(tp)  # 再转成时间戳
     5     else:
     6         res = time.time()  # 默认取当前时间戳
     7     return int(res)
     8 print(strToTimestamp())
     9 print(strToTimestamp('2011-2-28 12:30:15'))
    10 print(strToTimestamp('2011-2-28','%Y-%m-%d'))
    复制代码

    六、datetime模块

       datetime模块和time模块类似,也可以进行时间戳、时间元组以及格式化时间的相互转换。

    复制代码
     1 import datetime
     2 print(datetime.datetime.today())  # 获取当前时间,精确到秒
     3 print(datetime.date.today())      # 获取当前时间,精确到天
     4 print(datetime.datetime.now())    # 当然时间格式化输出
     5 res = datetime.date.today() + datetime.timedelta(days=5)#获取5天以后的时间
     6 res = datetime.date.today() + datetime.timedelta(days=-5)#获取5天以前的时间
     7 res = datetime.date.today() + datetime.timedelta(weeks=5)#获取5周以后的时间
     8 res = datetime.datetime.today() + datetime.timedelta(hours=5)#获取5小时以后的时间
     9 res = datetime.datetime.today() + datetime.timedelta(minutes=5)#获取5分钟以后的时间
    10 res = datetime.datetime.today() + datetime.timedelta(seconds=5)#获取5秒钟以后的时间
    11 res = datetime.datetime.today() + datetime.timedelta(days=5,hours=5,minutes=5,seconds=5,weeks=5)
    12 print(res.strftime('%Y%m%d--%H%M%S'))  # 格式化时间输出
    13 print(res)
    复制代码

    七、hashlib模块

      hashlib模块用于加密,加密方式包括:md5、sha1、sha224、sha256、sha384、sha512、blake2b、blake2s、sha3_224、sha3_256、sha3_384、sha3_512、

    shake_128和shake_256等等。

    复制代码
     1 import hashlib
     2 passwd = 'jj123'      # 普通字符串不能加密,必须是二进制的bytes
     3 f = passwd.encode()   # 把字符串转成bytes(二进制)类型
     4 m = hashlib.md5()     # 定义加密方法
     5 m.update(f)           # 对bytes(二进制)类型字符串进行加密
     6 print(m.hexdigest())  # 获取结果返回
     7 # md5加密是不可逆的
     8 
     9 # 其他加密方法,用法与md5一样,只是返回的密文长度不一样
    10 passwd = 'jack'
    11 f = passwd.encode()
    12 m = hashlib.sha256()
    13 m.update(f)
    14 print(m.hexdigest())
    复制代码

    封装加密函数:

    复制代码
    1 def my_md5(str):
    2     new_str = str.encode()  # 把字符串转成bytes类型
    3     # new_str = b'%s'%str   # 把字符串转成bytes类型
    4     m = hashlib.md5()       # 实例化md5对象
    5     m.update(new_str)       # 加密
    6     return m.hexdigest()    # 获取结果返回
    作者:gtea 博客地址:https://www.cnblogs.com/gtea
  • 相关阅读:
    Java框架-mybatis02基本的crud操作
    Java框架-mybatis01查询单个数据
    MAC常用命令
    性能测试工具Jmeter13-Jmeter跨线程组调用token
    性能测试工具Jmeter12-Jmeter连接配置带跳板机(SSH)的mysql服务器
    Java基础29-子父类中的成员变量
    Java基础28-继承
    Java基础27-单例设计模式
    启动项目时报spawn cmd ENOENT
    npm安装教程
  • 原文地址:https://www.cnblogs.com/gtea/p/12715581.html
Copyright © 2011-2022 走看看