python -常用库及内置内置库

目录

内置库

os/sys

文件处理

科学计算

日期与时间处理

获取当前时间/获取特定时间

json

python与json数据类型对应

正则表达式re

正则表达式

使用re模块实现正则表达式操作

多线程threding

pythonlogging/pythonlogging

venv环境管理

pip环境管理

常用三方库yaml

常用三方库pymysql

常用第三方库URLlib3


内置库

os/sys

【python】(十一)python内置库——OS和sys_python安装sys库_爱测试的高胖胖的博客-CSDN博客

文件处理

Python基础:Python文件处理_埋头苦干的渗透小白的博客-CSDN博客

科学计算

日期与时间处理

python处理时间和日期_python操作日期和时间的方法_爱分析的博客-CSDN博客​​​​​​

获取当前时间/获取特定时间

  • 作为日志信息的内容输出
    • python中处理时间的模块
      • time
      • datetime(重点)//from datetime import datetime
        • 获取当前的日期和时间
      • import datetime
        nowtime = datetime.datetime.now()
        print(nowtime) #打印当前的时间2023-07-18 18:08:30.916404
        print(nowtime.day)#打印当前月月份的第几天 18
        print(nowtime.weekday())# 打印当前是每周的星期几 1
        print(nowtime.month)#打印当前的月份
        print(nowtime.year)# 打印当前的年份
        
        print(nowtime.timestamp())#转成时间戳 1689675321.258739
         
        • 字符串与时间的互换
        • s = '2023-07-18 18:21:59'
          s1 = datetime.datetime.strptime(s,'%Y-%m-%d %H:%M:%S') # %Y(代表年)-%m(月)-%d(天) %H(时):%M(分):%S(秒)
          print(f'今年是第{s1.year}')
          
        • 时间戳与时间互换
        • import datetime
          #导出当前的时间
          nowtime = datetime.datetime.now()
          mtimestamp = nowtime.timestamp()
          #时间戳转换为时间格式
          s = datetime.datetime.fromtimestamp(mtimestamp)
          print(s)
          #时间转换为时间戳格式
          print(s.timestamp())
        • 写一段代码,生成一个以时间命名的日志文件,并向日志文件内写入日志数据
        • import datetime
          #导出当前的时间
          nowtime = datetime.datetime.now()
          f = open(f"{nowtime}", "w")
          log_content=input('请输入该文件的内容')
          f.write(f'{log_content}')
          f.close()
          import datetime
          #导出当前的时间
          nowtime = datetime.datetime.now()
          log_name = c_time+'.log'
          with open(log_name,'w+',encoding='utf-8')as f:
              # 日志信息包括:datetime [level] line:13 this is a log message
              message = f'{nowtime} [info] [level] line:13 this is a log message'
              f.write(message)
              f.close()

          with open() as f: 是 Python 中打开文件的一种常用方式。它使用了上下文管理器的语法,能够自动地在打开和关闭文件时调用相应的清理操作。

          用法如下:

          with open(文件名, 模式) as 变量名:
              变量名.操作()
          

          其中,文件名是要打开的文件的名称,模式是文件的打开模式。比如"r"表示只读模式, "w"表示只写模式, "a"表示追加模式等.

          在 with 语句的代码块中,可以对打开的文件进行读写操作,如:

          with open('example.txt', 'r') as f:
              print(f.read())

          这个例子中打开了文件example.txt,并且读取里面的所有内容。

          当代码执行完 with 语句的代码块后,文件会自动关闭。因此,不需要再单独写f.close()来关闭文件。

json

概念:json是用于存储和交换数据的语法,是一种轻量级的数据交换格式

使用场景:

  • 接口数据传输
  • 序列化
  • 配置文件

json的结构

#键值对形式
#数组形式
{
    "language": [
        {
            "name": "python",
            "url": "https://www.python.org/"
        },
        {
            "name": "java",
            "url": "https://www.java.com/zh-CN/"
        }
    ]
}

python与json数据类型对应

  •  定义一个python结构对象
import json

# 定义一个python结构的对象
data = {
    'a': 1,
    'b': ['1', '2', '3'],
    'c': True,
    'd': False,
    'e': None
}
  •  将python结构对象编码为json格式
# 将python对象编码为json结构的字符串
json_data = json.dumps(data)
print(json_data)
  • json结构的输出为
{"a": 1, "b": ["1", "2", "3"], "c": true, "d": false, "e": null}
  • 与python结构对象有什么区别
    • 首先键值必须用双引号""括起来
    • pytho结构的布尔类型True转化为true
    • python结构的空置None转化为null
    • json.dumps(obj,ensure_ascii=True/False,indent=x)
      • ensure_ascii=False //代表支持中文输入输出
      • indent = x 代表缩进x个空格
      • import json
        
        # 定义一个python结构的对象
        data = {
            'a': 1,
            'b': ['1', '2', '3'],
            'c': True,
            'd': False,
            'e': None,
            'f': '霍格沃滋'
        }
        json_data = json.dumps(data, ensure_ascii=False, indent=4)
        print(json_data)
        
        
        运行结果是:
        {
            "a": 1,
            "b": [
                "1",
                "2",
                "3"
            ],
            "c": true,
            "d": false,
            "e": null,
            "f": "霍格沃滋"
        }
        

  • 将json格式转化为python //json.loads(str:string)
  • json_data = '''{"a": 1, "b": ["1", "2", "3"], "c": true, "d": false, "e": null}'''
    #json_data为字符串类型对象,json.loads的传参对象为字符串类型
    data = json.loads(json_data)
    print(type(data),data)
    
    • 输出为:
    • <class 'dict'> {'a': 1, 'b': ['1', '2', '3'], 'c': True, 'd': False, 'e': None}
      
  • 将python对象转化为json格式的数据并且写入json文件中
  • with open('json.data','w') as f:
        json.dump(data,f)
    • ​​​​ 输出结构为
    • 创建了一个data.json的文件,并且将python对象转化为json并保存在data.json文件中
    • ​​​​​​​
  • 将json文件转化为python对象
  • with open('json.data','r') as f:
        data = json.load(f)
        print(data)
    • ​​​​​​​ 注意json.load()传参的对象是一个文件,json.loads()传参的对象是一个json结构

正则表达式re

正则表达式

  • 概念:正则表达式就是记录文本规则的代码
  • 可以查找操作符合某些复杂规则的字符串
  • 使用场景
    • 处理字符串
    • 处理日志

使用re模块实现正则表达式操作

python——正则表达式(re模块)详解_python re正则表达式_nee~的博客-CSDN博客

  • 原生字符串需要在字符串前方加上r'string'
  • 正则表达式对象转换
    • compile():将字符串转换为正则表达式对象
    • 需要多次使用这个正则表达式的场景
    • import re
      #去搜索包含hogwarts的字符串
      pattern = r"Hogwarts"
      #将pattern作为正则对象传给prog
      prog = re.compile(pattern)
      #后面prog可以直接调用re的方法
    • 所包含的参数
    •  match():从字符串的开始处进行匹配
    • import re
      #匹配以hog开头的字符串
      pattern = r"hog\w+"
      s1 = "hogwarts is a best shcool in my heart"
      match1 = re.match(pattern,s1,re.I)
      print(match1)
      s2 = "i like hogwarts very well"
      match2 = re.match(pattern,s2,re.I)
      print(match2)
      
      运行结果是:
      <re.Match object; span=(0, 8), match='hogwarts'>
      None #因为match只匹配开头的数据

      注意r"xxx\w+"想要查找包含xxx的字符串后面一定要跟‘\W+’

    • print(f'开始进行匹配的位置{match1.start()}')
      print(f'开始进行结束的位置{match1.end()}')
      print(f'匹配位置的元组为{match1.span()}')
      print(f'匹配位置的字符串为{match1.string}')
      print(f'匹配的数据为{match1.group()}')
      
      运行结果是:
      开始进行匹配的位置0
      开始进行结束的位置8
      匹配位置的元组为8
      匹配位置的字符串为hogwarts is a best shcool in my heart
      匹配的数据为hogwarts
    • search():在整个字符串中搜索第一个匹配的值
      • import re
        #匹配以hog开头的字符串
        pattern = r"hog\w+"
        s1 = "hogwarts is a best shcool in my heart"
        match1 = re.search(pattern,s1,re.I)
        print(match1)
        match2 = re.search(pattern,s2,re.I)
        print(match2)
        s3 = "i like hogwarts Hogwarts very well"
        #但是对第二次出现的关键字将不进行匹配
        match3 = re.search(pattern,s3,re.I)
        print(match3)
        
        运行结果是:
        <re.Match object; span=(0, 8), match='hogwarts'>
        <re.Match object; span=(7, 15), match='hogwarts'>
    • findall():在整个字符串中搜索所有符合正则表达式的字符串,返回列表
      • s2 = "i like hogwarts hogwarts very well"
        match2 = re.search(pattern,s2,re.I)
        print(match2)
        match2_list = re.findall(pattern,s2,re.I)
        print(match2_list,match2.span())
        
        运行结果是:
        ['hogwarts', 'hogwarts'] (7, 15)
    • 替换字符串 sub():实现字符串替换
      •  

      pattern = r'1[345678]\d{9}'#1开头 第二个字母从[3,4,5,6,7,8]中人选一个,后面跟着任意9个数据类型的字符
      s1 = '中奖号码是12345,联系人电话是:13838646613'
      result = re.sub(pattern,'1xxxxxxxxxxxx',s1)
      print(result)
      
      运行结果是:中奖号码是12345,联系人电话是:1xxxxxxxxxxxx

多线程threding

计算机组成原理:CPU、核心,进程、线程,串行、并发、并行_串行 并行 计算机组成原理_OceanStar的学习笔记的博客-CSDN博客

pythonlogging/pythonlogging

日志的作用:

  • 调试
  • 辅助定位问题
  • 数据分析

日志的级别

级别      何时使用
debug细节信息,仅当诊断问题时使用
info确认程序预期运行
warning表明有已经或即将发生的意外,程序仍按预期运行
error由于一些严重问题,程序的某些功能已经不能正常执行
critical严重的错误,程序不能再继续执行

 日志的使用

https://docs.python.org/zh-cn/3/howto/logging.html

 日志的级别

 只会打印warning及以上级别的日志信息

logging.basicConfig(level = logging.xxx)//表示只打印xx级别及其以上级别的日志

import logging
logging.basicConfig(level=logging.DEBUG)
logging.warning('Watch out!')  # will print a message to the console
logging.info('I told you so')  # will not print anything
logging.debug('这是一条debug级别的日志')

运行结果是:
WARNING:root:Watch out!
INFO:root:I told you so
DEBUG:root:这是一条debug级别的日志
记录日志到文件中
import logging
logging.basicConfig(filename='example.log',  level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')
logging.error('And non-ASCII stuff, too, like Øresund and Malmö')

 就会在该文件夹中创建example.log文件用来存放相应的日志文件

要显示日志的日期和时间
import logging
logging.basicConfig(format='%(asctime)s %(message)s')
logging.warning('is when this event was logged.')

运行结果是:
2023-07-31 16:02:40,483 is when this event was logged.

 需要打印更多的时间信息需要天街更多的参数

import logging
logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
logging.warning('is when this event was logged.')

运行结果是:
07/31/2023 04:05:45 PM is when this event was logged.
import logging

logging.basicConfig(filename='myapp.log',level=logging.INFO,
                    format='%(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)',
                    datefmt='%m/%d/%Y %I:%M:%S %p')
logging.info('这是一个日志')

 python日志的高级功能

 ​​​​​​​

 封装日志公共函数
import logging
import os
#定义一个记录器
def get_logger():
    # create logger
    print('文件处理器保存日志的路径',os.path.basename(__file__))
    logger = logging.getLogger(os.path.basename(__file__))
    #设置日志级别
    logger.setLevel(logging.DEBUG)
    # create console handler and set level to debug
    ch = logging.FileHandler(filename='mylog.log', encoding="utf-8")
    ch.setLevel(logging.DEBUG)
    # create formatter创建格式器
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # add formatter to ch
    ch.setFormatter(formatter)
    # add ch to logger
    logger.addHandler(ch)
    return  logger
logger = get_logger()
logger.debug("debug message")
logger.info('info message')
logger.warning('warning message')
logger.error('error message')

venv环境管理

Python之虚拟环境venv实战详解_python venv_代码大师麦克劳瑞的博客-CSDN博客

pip环境管理

pip依赖管理与虚拟环境_florachy的博客-CSDN博客

常用三方库yaml(管理配置数据及测试数据)

概念:
  • 一种数据序列化格式
  • 用于人类的可读性和与脚本语言的交互
  • 一种被认为可以超越XML\JSON的配置文件
yaml基本语法规则
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略
YAML支持的数据结构
  • 对象:简直对的集合,用冒号:表示
  • 数组:一组按次序排列的值,前加“-”
  • 纯量:单个的、不可再分的值
    • 字符串
    • 布尔值
    • 整数
    • 浮点数
    • Null
    • 时间
    • 日期
# 编程语言
languages:
  - PHP
  - Java
  - Python 
book:
  Python入门: # 书籍名称
    price: 55.5
    author: Lily
    available: True
    repertory: 20
    date: 2018-02-17
  Java入门:
    price: 60
    author: Lily
    available: False
    repertory: Null
    date: 2018-05-11
PyYAML安装方式
  • python的YAML解析器和生成器
  • 官网:https://pypi.org/project/PyYAML/
  • 安装:pip install pyyaml
将对象用python转化成yaml对象
import yaml

data = {
    "client": {"default-character-set": "utf8"},
    "mysql": {"user": 'root', "password": 123},
    "custom": {
        "user1": {"user": "张三", "pwd": 666},
        "user2": {"user": "李四", "pwd": 999},
    }
}
# 直接 dump 可以把对象转为 YAML 文档
with open('./my.yaml','w',encoding='utf-8') as f:
    yaml.dump(data,f)//需要传递传入的对象,及数据流

 在对应的目录下创建了一个名为my.yaml的文件

该yaml文件的格式为: 

client:
  default-character-set: utf8
custom:
  user1:
    pwd: 666
    user: "\u5F20\u4E09"
  user2:
    pwd: 999
    user: "\u674E\u56DB"
mysql:
  password: 123
  user: root

常用三方库pymysql

常用第三方库URLlib3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值