ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • Python笔记

    • 基础知识

      • 常见规范与运行方式
      • 变量与垃圾回收机制
      • 输入与格式化输出
      • 运算符
      • 流程控制语句
      • 浅拷贝和深拷贝
      • 常用数据类型与分类
      • 数据类型方法
      • 字符编码
      • 文件操作
      • 函数与参数
      • 命名空间与作用域
      • 闭包函数与装饰器
      • 迭代器与生成器
      • 三元表达式与生成式
      • 函数递归
      • 面向过程式和函数式编程
      • 模块与包
      • 程序设计目录参考
      • 常用内置模块或函数
        • time模块
        • datetime模块
        • turtle模块
          • 介绍
          • 常用状态函数
          • 常用运动函数
        • random模块
        • string模块
        • os模块
        • sys模块
        • 打印进度条
        • shutil模块
        • 进制转换
        • range函数
        • Configparser模块
        • Hashlib模块
        • Subprocess模块
        • Re模块
        • Pyinstaller
        • 其他常用内置函数
      • 序列化和猴子补丁
      • 日志模块-logging
    • 类与面向对象

    • 并发编程

    • Web编程

    • 模块笔记

    • 其他

  • C笔记

  • C++笔记

  • Arduino笔记

  • Dev
  • Python笔记
  • 基础知识
Hoshinozora
2023-02-15
目录

常用内置模块或函数

# time模块

# 导入模块
  • import time

# 获取时间戳
  • time.time()
  • 获取时间戳,从1970年到现在经过的秒数。
  • 可用于不同时间之间相差的计算,例如:
start = time.time()
end = time.time()
interval = end - start
1
2
3

# 按指定格式显示时间
  • time.strftime('format')
  • 按指定格式显示时间,同linux中date命令用的格式一样
  • 如:
    • time.strftime('%F %T')
    • time.strftime('%Y-%m-%d %H:%M:%S')
  • 作用
    • 用于更直观的显示时间

# 获取结构化时间
  • time.localtime()
    • 如: 计算机现在的年份、现在的月份、今份的第几天、第几小时、第几分钟、第几秒、本周的第几天等。
  • 例如
    • print(time.localtime())
    • print(time.localtime().tm_year)
  • 作用
    • 用于单独获取时间的某一部分

# 时间格式的转换
  • 字符串 -> 结构化时间
    • time.strptime('时间字符串', '格式')
    • time.strptime('2000-03-03 11:11:11', '%F %T')
  • 结构化时间 -> 时间戳
    • time.mktime(struct_time)
  • 结构化时间 -> 格式化时间
    • time.strftime('%F %T', struct.time)
  • 时间戳 -> 结构化时间
    • time.localtime(tp_time)

# 使程序休眠n秒
  • time.sleep(n)
  • 例如
    • time.sleep(3)


# datetime模块

# 导入模块
  • import datetime

# 获取已格式化的当前时间
  • datetime.datetime.now()
  • 同时可以在该方法获得的时间的基础上,进行时间的运算,如:获取过去或未来n天的日期

# 时间计算
  • datetime.timedelta()
  • 用于datetime的时间类型的计算
  • 例如
# 计算三天前的时间
now = datetime.datetime.now()
print(now + datetime.timedelta(days=-3))

# 运算符也可以放中间,但推荐放后面,如:days=-3
now - datetime.timedelta(days=3)

# 计算三天后的时间
now = datetime.datetime.now()
print(now + datetime.timedelta(days=+3))
1
2
3
4
5
6
7
8
9
10

# 时间格式的转换
  • 时间戳 —> 格式化时间
    • datetime.datetime.fromtimestamp(tp_time)
  • 字符串 —> 格式化时间
    • datetime.datetime.strptime(strtime,fmt)
    • 如:
      • datetime.datetime.strptime('2021-06-02 12:21:12', '%Y-%m-%d %H:%M:%S')


# turtle模块

# 介绍

  • 通过import turtle导入模块。turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制。
  • turtle库绘制图形有一个基本框架:一个小海龟在平面坐标系中爬行,其爬行轨迹形成了绘制图形。对于小海龟来说,有"前进"、"后退"、"旋转"等爬行行为,对坐标系的探索也通过"前进方向"、"后退方向"、"左侧方向"、"右侧方向"等小海龟自身角度方位来完成。

# 常用状态函数

setup(width, height, startx, starty)

  • 窗口函数,用于设置图形绘制主窗口的大小和位置。
  • 参数:
    • width:窗口宽度,如果值是整数,表示的像素值。如果值是小数,表示窗口宽度与屏幕的比例。
    • height:窗口高度,如果值是整数,表示的像素值。如果值是小数,表示窗口宽度与屏幕的比例。
    • startx:窗口左上角在屏幕中的水平位置,值默认为None,表示窗口位于屏幕水平中央。
    • starty:窗口左上角在屏幕中的垂直位置,值默认为None,表示窗口位于屏幕垂直中央。

pendown()

  • 放下画笔,进行轨迹绘制(默认)。移动画笔位置会留下痕迹。

penup()

  • 拿起画笔,不进行轨迹绘制。拿起画笔后移动画笔位置不会留下痕迹。

pensize(width)

  • 设置画笔线条的粗细。

pencolor(画笔色)

  • 设置画笔的颜色。
  • 例如:turtle.pencolor('green')

color(画笔色, 填充色)

  • turtle.color(画笔色, [填充色])
  • 设置画笔和填充颜色。
  • 例如:turtle.color('green', 'red')

begin_fill()

  • 开始填充图形,填充图形前需要调用该方法。

end_fill()

  • 结束填充图形。

filling()

  • 返回填充状态,布尔值。

clear()

  • 清空当前窗口,画笔位置不会重置。

reset()

  • 重置当前窗口,画笔位置也会重置。

write(str, font=None)

  • 输出font字体的字符串。

hideturtle()

  • 隐藏画笔形状。

showturtle()

  • 显示画笔形状(默认)。

done()

  • 暂停程序,在程序最后添加可以防止窗口退出。
  • 它的目的是给用户时间来查看图形,没有它,图形窗口会在程序完成是立即关闭。

# 常用运动函数

fd()

  • 沿着当前方向前进指定像素距离,和forward()函数功能一致。
  • 可以通过指定负数表示后退,例如:turtle.fd(-100)

setheading(angle)

  • 设置当前朝向为指定的角度,可以简写为seth(),例如:turtle.seth(120)

left(angle)

  • 将画笔向左旋转指定的角度。

right(angle)

  • 将画笔向右旋转指定的角度。

circle(r, e, [c])

  • 绘制一个半径为r、角度为e的圆或弧形。
  • 还可以指定c指定绘制时的线条数量。

undo()

  • 撤销画笔的最后一步动作。

goto(x, y)

  • 将画笔移动到绝对坐标(x, y)处,画笔方向不变。

speed()

  • 设置画笔的绘制速度,速度范围为0~10。
    • 0最快、10快、6正常、3慢、1最慢。

dot(d, color)

  • 绘制一个直径为d、颜色为color的圆点。

home()

  • 移动画笔位置到原点,然后朝向东。


# random模块

# 导入模块
  • import random

# 设置随机数种子
  • random.seed(n)
  • 随机数种子相同,生成的随机数就相同。默认是当前系统时间。
# 随机返回一个0~1之间的小数
  • random.random()
  • 包括0.0但不包括1.0。

# 随机返回一个n~m之间的整数
  • random.randint(n,m)
  • 头和尾都可以被取到。

# 随机返回一个n~m之间的浮点数
  • random.uniform(n,m)
  • 头和尾都可以被取到。

# 随机从指定的列表中取出一个值
  • random.choice(list)
  • 例如:print(random.choice([1,2,3]))

# 随机从指定的列表中取出n个值
  • random.sample(list,n)
  • 例如:print(random.sample((1,2,3), 2)

# 随机验证码
  • chr(n)
    • 根据ASCII码将数字转换成对应的英文字母。
  • ord('A')
    • 根据ASCII码将英文字母转换成对应的数字。
  • 实现
res = ""
for i in range(4):
    # 随机数字
    num = str(random.randint(0,9))
    # 随机大写字母
    upword = chr(random.randint(65,90))
    # 随机小写字母
    loword = chr(random.randint(97,122))
    res+=random.choice([num,upword,loword])
print(res)
1
2
3
4
5
6
7
8
9
10


# string模块

# 导入模块
  • import string

# 包含所有大写和小写字母
  • string.ascii_letters

# 包含所有整数 0-9
  • string.digits

# 包含所有小写字母的字符串
  • string.ascii_lowercase

# 包含所有大写字母的字符串
  • string.ascii_uppercase


# os模块

# 作用
  • os模块可用于控制多数的操作系统
  • 但有些函数并非所以系统都能使用

# 常用变量
  • os.name
    • 记录操作系统的名字。
    • 如:Windows是nt、Linux是posix。

# 常用函数
  • 参数皆为str字符串类型
  • 查
    • __file__
      • 内置变量,表示当前文件
    • os.path.dirname(__file__)
      • 获取指定文件所在目录
    • os.listdir(path)
      • 列出path目录下所有的文件和目录名,返回一个列表
      • 不指定path则默认为脚本运行的目录
    • os.getcwd()
      • 返回当前工作的目录
      • 默认为运行脚本时所在的目录
    • os.access(path, mode)
      • 检查是否有指定权限
      • mode为
        • 一次检查多个权限可用逗号隔开
        • os.F_OK
          • 测试path是否存在
        • os.R_OK
          • 测试path是否可读
        • os.W_OK
          • 测试path是否可写
        • os.X_OK
          • 测试path是否可执行
    • os.path.abspath(path)
      • 获取相对路径文件的绝对路径
    • os.path.exists(path)
      • 检验指定的对象是否存在
      • 存在返回True,否则False
    • os.path.isfile(path)
      • 判断指定对象是否为文件
      • 是返回True,否则False
    • os.path.isdir(path)
      • 判断指定对象是否为目录
      • 是True,否则False
    • os.path.split(path)
      • 返回一个元组,记录传入的路径的目录和文件名
      • 就是将最后一个 / 的左边右边分开
    • os.path.getsize(path)
      • 获得文件的大小
  • 改
    • os.chdir(path)
      • 改变当前工作目录到指定目录
    • os.rename(oldname, newname)
      • 重命名文件或目录
      • 从 oldname 到 newname
    • os.system(cmd)
      • 执行shell命令,返回值是脚本的退出状态码
      • shell中0为成功,非0为不成功
  • 增
    • os.mkdir(path)
      • 创建path指定的目录,不可递归创建
    • os.makedirs(path/path...)
      • 创建path指定的目录,可递归创建
  • 删
    • os.remove(path)
      • 删除path指定的文件
    • os.rmdir(path)
      • 删除path指定的空目录,无法删除有文件的目录


# sys模块

# 获取执行Python文件时传进来的参数
  • sys.argv
  • 记录执行Python文件时传进来的参数
  • 如:
    • python main.py 参数1 参数2...
    • 输出 [.../main.py, 参数1, 参数2]

# 获取Python搜索文件的路径的变量
  • sys.path
  • 记录Python搜索文件的路径的变量


# 打印进度条

# 实现思路
  • 通过除,获得值的百分比,传入百分比,再根据百分比*#然后进行打印

# 实现例子
def bar(now_size, total_size):
    while now_size < total_size:
        now_size += 10240
        percent = now_size / total_size
        if percent > 1:
            percent = 1
        res = int(50 * percent) * '#'
        print('\r[{a: <50}]{b}%'.format(a=res, b=int(100 * percent)), end='')
now_size = 0
total_size = 333333
bar(now_size, total_size)
1
2
3
4
5
6
7
8
9
10
11


# shutil模块

# 导入模块
  • import shutil
  • 用于对文件进行基本操作

# 拷贝文件
  • shutil.copyfile(src, dest)

# 拷贝文件和权限
  • shutil.copy(src, dest)

# 拷贝目录
  • shutil.copytree(src, dest)
  • ignore=shutil.ignore_patterns('要排除的文件')
    • 可使用通配符

# 递归的去删除文件夹中的文件
  • shutil.rmtree(path)

# 递归的移动文件
  • shutil.move(src, dest)

# 压缩文件
  • shutil,make_archive('压缩后文件名', '压缩方式', root_dir='要压缩的文件夹')
  • 压缩方式
    • zip/tar/bztar/gztar


# 进制转换

  • 十进制转其他进制
    • 10进制转2进制:bin(十进制数)
    • 10进制转8进制:oct(十进制数)
    • 10进制转16进制:hex(十进制数)
  • 其他进制转十进制
    • 2进制转10进制:int("二进制", 2)
    • 8进制转10进制:int("二进制", 8)
    • 16进制转10进制:int("二进制", 16)


# range函数

  • range(范围数)
    • 生成范围迭代对象,默认以 0 作为起点,可作为循环的迭代对象
      • Python2,不指定起点数,会以0为起点,返回指定范围的列表,如 range(5) 会返回 [1,2,3,4,5]
      • Python3,不指定起点数则会生成对应的range代码,如 range(5) 会返回 range(0,5)
        • 比python2的方式,更节省内存
        • 作为迭代对象时,仍然有效
  • range(起点数, 结束数)
    • 顾头不顾尾,如:传入(1,3) 可以得到 [1,2]
  • range(起点数 , 结束数 , 步长)
    • 步长就是每次加多少,默认是1


# Configparser模块

# 用来读取解析配置文件


# 配置文件格式

[section1]
key = value
... ...
[section2]
key = value
... ...
1
2
3
4
5
6
  • 例如
# 或 ; 是注释
[mysqld]
user = mysql
group = mysqls
1
2
3
4

# 读配置文件

# 实例化
config = configparser.ConfigParser()
# 读取配置文件到内存
config.read('文件路径', encoding='utf-8')
1
2
3
4

# 获取配置项

  • config.sections()
    • 获取所有 section,返回一个列表
  • config.options('section_name')
    • 获取某一 section 下的所有 option 键名
  • config.items('section_name')
    • 获取某一 section 下的所有 option 键值对
    • 返回一个列表,键值对用元组分隔
  • config.get('section_name', 'option_key')
    • 获取 option 键对应的值
  • config.getint('section_name', 'option_key')
    • 获取值转换为整数类型
  • config.getfloat('section_name', 'option_key')
    • 获取值转换为浮点类型


# Hashlib模块

# 介绍

  • Hash,译做"散列",也有直接音译为"哈希",hash算法就是哈希函数,也称摘要函数
  • 把任意长度的输入,通过某种hash算法,变换成固定长度的输出,该输出就是散列值,也称摘要值
  • 特点
    • 只要传入的内容一样,得到的hash值必然一样
      • 可用于传输密码、校验文件完整性等
    • 不能由hash值返解成内容
      • 但可能会被撞库对撞出来
      • 可以通过加盐解决
    • 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

# 常见hash算法

  • 注意
    • 算法越安全,速度越慢,摘要长度越长
  • MD5
    • 最常用的算法,速度很快,它的结果是16字节长度,通常用一个32位的16进制字符串表示
  • SHA1
    • 比MD5更安全一点,它的结果是20字节长度,通常用一个40位的16进制字符串表示
  • SHA256和SHA512
    • 比SHA1更安全的算法,但越安全,速度越慢

# 使用方法

  • import hashlib
    • 导入模块
  • hash = hashlib.md5()
    • 获得MD5散列生成器对象
    • 也可以在此加盐
      • 再调用update前,事先就在其中加上"Test"
  • hash.update(bytes)
    • 传入Bytes类型,得到MD5散列
    • 传入的值不会清空,下次再update传入值时,则会拼接上次传入的值
      • 所以也可以用来加盐
  • hash.hexdigest()
    • 获得产生的hash值
  • 例如:
a = hashlib.md5(b'Test')
a.update(b"English")
a.update("中文".encode('utf-8'))
res_md5 = a.hexdigest()
# 或
a = hashlib.md5()
a.update("TestEnglish中文".encode('utf-8'))
res_md5 = a.hexdigest()
1
2
3
4
5
6
7
8

# 使用案例

  • 校验文件一致性
import hashlib
mdfive = hashlib.md5()
with open('test.txt', 'rb') as f:
    for line in f:
        mdfive.update(line)
print(mdfive.hexdigest())
1
2
3
4
5
6


# Subprocess模块

# 作用

  • 启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值
  • 可用于执行系统命令并获得输出和返回值等

# 用法

  • popen = subprocess.Popen()
    • 常用参数
      • 执行系统命令并返回输出 + 返回值
        • 调用会返回一个CompletedProcess实例
        • 命令即是程序,子进程即是命令程序的进程
      • args
        • 默认需要使用数组运行命令
        • subprocess.run(['df', '-h'])
      • shell=True
        • 为True则创建操作系统的 shell 执行命令
          • 默认False
        • 为True可使用字符串运行命令
          • subprocess.run('df -h', shell=True)
      • stdin、stdout、stderr
        • 分别表示程序的标准输入、标准输出、标准错误
        • 值可以为
          • None
            • 默认为None,表示什么都不做
          • subprocess.PIPE
            • 表示将命令执行的结果丢到一个新管道去
            • 然后就可以通过管道取出结果
          • subprocess.DEVNULL
            • 表示使用 os.devnull
          • 存在的文件描述符、文件对象
        • 例如:stdin=subprocess.PIPE
      • encoding
        • 如果指定了该参数,则会stdin、stdout、stderr的结果按照指定的编码格式进行解码,不指定则返回Bytes类型
      • timeout=num
        • 设置命令超时时间,单位为秒
      • cwd
        • 指定命令执行的目录路径
      • env
        • 用于指定子进程的环境变量
    • 方法
      • popen.[stdin/stdout/stderr].read()
        • 读取指定管道的输出结果
      • popen.returncode
        • 返回子进程的返回值,如0代表执行成功
        • 若值为负值 "-N",表明子进程被终
      • popen.poll()
        • 检查进程是否终止,如果终止返回 returncode,否则返回 None
      • popen.kill()
        • 杀死子进程,发送SIGKILL信号到子进程


# Re模块

# 导入模块
  • import re

# 正则符号
  • \w -- 匹配字母、数字、下划线
  • \W -- 匹配非字母、数字、下划线
  • [abc]、[^abc]
    • []括号内的^表示取反
  • [a-z]、[A-Z]、[0-9]、[a-zA-Z0-9]
    • [] 内的 - 左右两侧都有字符、则表示一个范围
  • "^"、"$"、"."、"*"、"+"、"?"
  • "{n}"、"{n,m}"、"|"、"()"、"\n"

# re.findall
  • re.findall('正则表达式', '字符串')
  • 匹配所有满足条件的结果,放在列表里

# re.search
  • re.search('正则表达式', '字符串').group()
  • 只到找到第一个匹配的,然后返回一个包含匹配信息的对象
  • 需用调用 group() 方法取出匹配的字符串,如果没有匹配则返回None

# re.sub
  • re.sub('原字符','目标字符','字符串', num)
  • 从左往右替换字符串,然后返回替换后的字符串
  • 不指定次数则替换所有匹配的字符
  • num
    • 指定替换次数,只替换相应次数
    • 不指定则为匹配成功的全部都替换

# Pyinstaller

# 其他常用内置函数

# abs

  • abs(值)
  • 取绝对值

# all

  • all(可迭代对象)
  • 其中的可迭代类型的值,只有全为true时,all()返回的才为True,否则返回False

# any

  • any(可迭代对象)
  • 其中的可迭代类型的值,只要有一个为True,any()就会返回True,否则返回False

# dir

  • dir()
  • 查看对象或类中有哪些属性

# divmod

  • divmod(x, y)
  • 除数和余数运算结果结合起来,返回一个包含商和余数的元组。
  • 同等于(x//y, x%y)。

# round

  • round(浮点数)
  • 将浮点数4舍6入,奇进偶不进。
    • 当尾数为1到4中的数字时,就不进位。
    • 当尾数为6到9中的数字时,就进位。
    • 当尾为5时,看5前面一位,如果是奇数,就进位。否则就不进位。

# pow

  • pow(x, y, [z])
  • 对值进行幂运算。
  • 同等于x**y和x**y%z。

# max

  • max(x1, x2, ...,xn)
  • 取任意多数量的最大值。

# min

  • min(x1, x2, ...,xn)
  • 取任意多数量的最小值。

# isinstance

  • isinstance(对象, 类)
  • 用于判断对象是否属于指定类或类型。

# zip

  • zip(可迭代对象1, 可迭代对象2)
  • 将两个可迭代对象的每个值,一一对应的作为元组拼凑到一起

# import

  • 名称 = __import__('模块名称')
  • 以字符串的方式导入函数,并返回模块给名称
  • 同等于import time as time,但可用字符串的方式导入

# print

  • print输出换行

    • print("\n")
  • print指定结尾符

    • print("test", end="@")
    • end默认为 \n 换行
#内置模块#内置方法
程序设计目录参考
序列化和猴子补丁

← 程序设计目录参考 序列化和猴子补丁→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式