1. random随机数模块
import random
# 1. 随机产生一个0-1之间的小数
print(random.random())
# 2. 随机产生一个1-6之间的整数
print(random.randint(1,6))
# 3. 随机产生一个1-6之间的小数
print(random.uniform(1,6))
# 4. 随机抽取一个
print(random.choice(['特等奖','一等奖','二等奖','三等奖','纪念奖']))
# 5. 随机抽取指定数量样本
print(random.sample(['安徽省','江苏省','山东省','广东省','四川省','云南省'], 2))
# 6. 随机打乱容器类型中的诸多元素
l = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
random.shuffle(l)
print(l)
# [2, 1, 13, 8, 9, 6, 12, 5, 4, 10, 7, 14, 11, 3, 15]
前几年搜狗公司笔试题
"""
编写五位随机验证码,可以是由数字,小写字母,大写字母任意组合。
"""
import string
import random
# 方法一:使用string模块
code = ''
for i in range(5):
# 全部大小写英文字符
letters = string.ascii_letters
# 随机抽取全部大小写英文字母
letters1 = random.choice(letters)
# 随机生成0-9其中数字
number = random.randint(0, 9)
tar_code = random.choice([letters1, number])
code += str(tar_code)
print(code)
# 方法二:
code1 = ''
for j in range(5):
letter_upper = chr(random.randint(65, 90))
letter_lower = chr(random.randint(97, 122))
number1 = random.randint(0, 9)
tar_code1 = random.choice([letter_lower, letter_upper, number1])
code1 += str(tar_code1)
print(code1)
2. os模块
重点是:os模块主要与操作系统打交道!!!
import os
# 1. 创建单级目录(文件夹)
os.mkdir('文件夹名字')
os.mkdir(r'文件夹名字\文件加名字22') # 直接报错,只能创建单级目录
# 2. 创建多级目录(文件夹)
os.makedirs(r'文件夹\文件夹2\文件夹3')
# 3. 删除空文件夹(空目录)
os.rmdir() # 只有空文件夹才可以删,局限很大
os.removedirs() # 只有空文件夹才能删除
# 4. 列举指定路径下的文件名称,包含任意类型文件
print(os.listdir(r'D:/'))
# 5. 拼接文件完整路径***********
# 专门用于路径啤酒,并且能够自动识别当前系统的路径分隔符
os.path.join()
# 6. 当前文件所在路径,还可以嵌套,则为上一级路径
BASE_DIR = os.path.dirname(__file__)
mo_dir = os.path.join(BASE_DIR, '教学视频')
# 7. 删除一个文件
os.remove('文件名')
# 8. 修改文件名称
os.rename('原文件名', '新文件名')
# 9. 获取当前工作路径
print(os.getcwd())
# 10. 切换路径
os.chdir('想要切换的路径')
# 11. 判断当前路径是否存在,既可以判断文件夹,也可以判断文件。
os.path.exists('想判断的对象')
# 12. 判断当前路径是否是文件
os.path.isfile('想判断的对象')
# 13. 判断当前路径是否是文件夹
os.path.isdir('想判断的对象')
# 14. 获取文件大小(字节数)
os.path.getsize()
3. sys模块
重点是:主要与python解释器打交道
import sys
# 系统路径,是个列表
print(sys.path)
sys.exit(1) # 退出程序,几乎不用
sys.version() # 版本
sys.platform() # 平台
print(sys.argv)
# 单独打印,获取当前文件的绝对路径
# 我们不怎么用,但是很多软件底层会用到
4. json(序列化)模块
json格式数据:实现跨语言传输
import json
d = {'name':'joshua', 'age':28}
# 1. 将python其他数据类型转成json格式字符串
"""双引号是json格式的独有特征"""
res = json.dumps(d) # 序列化
print(res, type(res))
# {"name": "joshua", "age": 28} <class 'str'>
# 2. 将json格式字符串转换成当前语言对应的某个数据类型
res1 = json.loads(res) # 反序列化
print(res1, type(res1))
# {'name': 'joshua', 'age': 28} <class 'dict'>
"""
可以暂时简单理解为:
序列化就是将其他数据类型转换成字符串的过程
json.dumps()
反序列化就是将字符串转换成其他数据类型
json.loads()
"""
# 将字典写入文件快捷方法
# json.dump() 相当于先dumps再write
# json.load() 相当于先loads再read
with open(r'a.txt', 'w', encoding='utf8') as f:
json.dump(d, f)
with open(r'a.txt', 'r', encoding='utf8') as r:
res = json.load(f)
ensure_ascii=False
# 上式可以阻止json序列化的时候会将中文转换成unicode类型
# 并不是所有的数据类型都支持序列化
# 例如集合set就没有办法序列化,但是不重要
可以通过:json.JSONEncoder查看支持序列化反序列化的类型。
5. subprocess模块
import subprocess
"""
1. 基于网络连接上一台计算机(socket模块)
2. 让连接上的计算机执行我们需要的命令
3. 将命令的结果返回给我们(当然也可以不返回)
"""
# tasklist:查看当前计算机正在跑着的程序列表。
res = subprocess.Popen('tasklist',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
print('stdout',res.stdout.read().decode('gbk'))
# 用来获取正确命令执行之后的结果
print('stderr',res.stderr.read().decode('gbk'))
# 用来获取错误命令执行之后的结果
"""在zgwindows底层用的是gbk"""