常用内置模块或函数
# time模块
# 导入模块
import time
# 获取时间戳
time.time()- 获取时间戳,从1970年到现在经过的秒数。
- 可用于不同时间之间相差的计算,例如:
start = time.time()
end = time.time()
interval = end - start
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))
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)
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)
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(十进制数)
- 10进制转2进制:
- 其他进制转十进制
- 2进制转10进制:
int("二进制", 2) - 8进制转10进制:
int("二进制", 8) - 16进制转10进制:
int("二进制", 16)
- 2进制转10进制:
# range函数
range(范围数)- 生成范围迭代对象,默认以 0 作为起点,可作为循环的迭代对象
- Python2,不指定起点数,会以0为起点,返回指定范围的列表,如 range(5) 会返回 [1,2,3,4,5]
- Python3,不指定起点数则会生成对应的range代码,如 range(5) 会返回 range(0,5)
- 比python2的方式,更节省内存
- 作为迭代对象时,仍然有效
- 生成范围迭代对象,默认以 0 作为起点,可作为循环的迭代对象
range(起点数, 结束数)- 顾头不顾尾,如:传入(1,3) 可以得到 [1,2]
range(起点数 , 结束数 , 步长)- 步长就是每次加多少,默认是1
# Configparser模块
# 用来读取解析配置文件
# 配置文件格式
[section1]
key = value
... ...
[section2]
key = value
... ...
2
3
4
5
6
- 例如
# 或 ; 是注释
[mysqld]
user = mysql
group = mysqls
2
3
4
# 读配置文件
# 实例化
config = configparser.ConfigParser()
# 读取配置文件到内存
config.read('文件路径', encoding='utf-8')
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')- 获取值转换为浮点类型
# Subprocess模块
# 作用
启动一个新进程,并连接到它们的输入、输出、错误管道,从而获取返回值,可用于执行系统命令并获得输出和返回值等。
# 用法
popen = subprocess.Popen()
执行系统命令并返回输出 + 返回值,调用会返回一个CompletedProcess实例。
常用参数
args- 默认需要使用数组运行命令
subprocess.run(['df', '-h'])
shell=True- 为True则创建操作系统的 shell 执行命令
- 默认False
- 为True可使用字符串运行命令
subprocess.run('df -h', shell=True)
- 为True则创建操作系统的 shell 执行命令
stdin、stdout、stderr- 分别表示程序的标准输入、标准输出、标准错误
- 值可以为
None- 默认为None,表示什么都不做
subprocess.PIPE- 表示将命令执行的结果丢到一个新管道去
- 然后就可以通过管道取出结果
subprocess.DEVNULL- 表示使用 os.devnull
- 存在的文件描述符、文件对象
- 例如:
stdin=subprocess.PIPE
encoding- 如果指定了该参数,则会stdin、stdout、stderr的结果按照指定的编码格式进行解码,不指定则返回Bytes类型
timeout=num- 设置命令超时时间,单位为秒
cwd- 指定命令执行的目录路径
env- 用于指定子进程的环境变量
# popen对象方法
popen.[stdin/stdout/stderr].read()- 读取指定管道的输出结果
popen.returncode- 返回子进程的返回值,如0代表执行成功
- 若值为负值 "-N",表明子进程被终
popen.poll()- 检查进程是否终止,如果终止返回 returncode,否则返回 None
popen.kill()- 杀死子进程,发送SIGKILL信号到子进程
popen.returncode- 执行完子进程状态,通常返回状态为0则表明它已经运行完毕,若值为负值 "-N",表明子进程被终。
# struct模块
# 作用
导入模块:import struct
该模块可以将Python基本数据类型打包成和C语言数据类型一样的二进制字节数据,或者反之将其解包成Python基本数据类型。
打包后的数据是二进制格式的字节,其占用的字节数是固定的。
# 格式字符
用于打包和解包时表示不同的C语言数据类型。
'x':填充字节。'c':char类型,占1字节。'b':signed char类型,占1字节。'B':unsigned char类型,占1字节。'h':short类型,占2字节。'H':unsigned short类型,占2字节。'i':int类型,占4字节。'I':unsigned int类型,占4字节。'l':long类型,占4字节(32位机器上)或者8字节(64位机器上)。'L':unsigned long类型,占4字节(32位机器上)或者8字节(64位机器上)。'q':long long类型,占8字节。'Q':unsigned long long类型,占8字节。'f':float类型,占4字节。'd':double类型,占8字节。's':char[]类型,占指定字节个数,需要用数字指定长度。'p':char[]类型,跟s一样,但通常用来表示字符串。'?':bool类型,占1字节。
# struct.pack
struct.pack('格式字符', 要打包的数据对象)
用于打包数据类型。
例如:
struct.pack('i', 2333)
# struct.unpack
struct.unpack('格式字符', 要转换的二进制数据)
用于解包数据类型。
例如:
struct.unpack('i', data)
# 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可以指定替换次数,只替换相应次数,不指定则为匹配成功的全部都替换。
# 其他常用内置函数
# 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("\n")
print指定结尾符
print("test", end="@")- end默认为 \n 换行