1.随机
随机模块 random
方法:
.random() 随机产生 0 - 1 之间的小数
.randint(1,6) 随机产生 1 - 6 之间的整数
.uniform(1,6) 随机产生 1 - 6 这几件的小数
.choice([元素1, 元素2···]) 随机抽取一个元素
.sample([元素1, 元素2···], num) 抽取指定样本 num为几抽取几个数
.shuffle([元素1, 元素2···]) 随机打乱容器元素的排序
import random
for i in range(5):
num = chr(random.randint(48, 57))
upper = chr(random.randint(65, 90))
lower = chr(random.randint(97, 122))
list1 = [num, upper, lower]
print(random.choice(list1), end='')
2.系统操作
系统操作 os模块
2.1os方法
方法:
.mkdir('目录名') 创建单级别目录 不能xx/xxx 在当前程序运行目录下创建
.makedirs('目录名/目录名') 创建多级目录 可以xx/xxx
.rmdir('目录名') 删除目录 只能删空目录
.removedirs('目录名/目录名') 移除多级目录 只能删空目录
.listdir('路径') 列出当前目录下的文件/文件名
.remove('文件路径') 移除一个文件
.rename('老文件名', '新文件名') 重命名
.getcwd() 查看当前路径
.chdir('路径') 切换路径
import os
os.mkdir('aa')
os.makedirs(r'aa\bb\ccc')
os.rmdir(r'aa')
os.rmdir(r'aa\bb\ccc')
os.removedirs('aa/bb')
print(os.listdir())
os.remove('a.txt')
os.rename('aa', 'bb')
print(os.getcwd())
os.chdir(r'F:\backups\notes\Project\test\bb')
print(os.getcwd())
2.2path方法
.path下方法
.join('路径', '路径') 路径拼接
能自动识别当前系统的路径分隔符,linux / windows \ '/也能用'
.exists('路径') 判断路径是否存在
.isfile('路径') 判断路径是否为一个文件
.isdir('路径') 判断路径是否为一个目录
.getsize('路径') 获取文件大小 字节数 字母1字节 中文3字节
path1 = os.getcwd()
print(os.path.join(path1, 'bb'))
print(os.path.exists(r'F:\backups\notes\Project\test\bb'))
print(os.path.isfile(r'F:\backups\notes\Project\test\bb'))
print(os.path.isdir(r'F:\backups\notes\Project\test\bb'))
print(os.path.getsize(r'F:\backups\notes\Project\test\1.py'))
2.3练习
import os
"""
创建一个文件夹
在穿件5个文件
展示文件,并绑定编号,选择编号查看文件信息。
"""
file_name = input('创建文件\n输入文件的名字>>>:').strip()
os.mkdir(file_name)
PATH_DIR = os.getcwd()
for i in ['a', 'b', 'c', 'd', 'e']:
file_path = os.path.join(PATH_DIR, file_name, '%s.txt' % i)
with open(file_path, mode='w', encoding='utf8') as f:
f.write('%s 的文件内容' % i)
file_path = os.path.join(PATH_DIR, file_name)
os.chdir(file_path)
all_file = os.listdir()
for x, y in enumerate(all_file):
print(x+1, y)
while True:
choice = input('选择文件观看>>>:').strip()
if choice.isdigit():
choice = int(choice) - 1
if choice in range(len(all_file)):
read_file_name = all_file[choice]
file_path = os.path.join(PATH_DIR, file_name, read_file_name)
with open(file_path, mode='r', encoding='utf8') as f:
print(f.read())
else:
print('选项不存在!')
else:
print('输入不合法!')
3.解释器操作
解释器操作 sys模块
.path python导入文件或者模块查找的路径
sys.path的第一个目录就是运行的stat.py所在的目录
.version 解释器版本
.platform 返回系统标识
window --> ’win32‘
linux --> ’linux‘
Mac OS --> ‘darwin’
Windows/Cygwin--> ‘cygwin’
.argv 获取当前执行文件的绝对路径
import sys
print(sys.argv)
print(sys.version)
print(sys.platform)
print(sys.argv)
print(sys.argv[0])
sys.argv == sys.argv[0]
从1 开始就是一个列表
sys.argv == sys.argv[1] 从一开始都是如果有值这会获取输入的第一个字符组 以 空格分割
sys.argv == sys.argv[2] 获取第二个值
模拟mysql 的登入
在交互环境下使用
python3 D:\13600\Desktop\test.py kid 123
import sys
try:
username = sys.argv[1]
password = sys.argv[2]
if username == 'kid' and password == '123':
print('正常执行文件内容')
else:
print('用户名或密码错误')
except Exception:
print('请输入用户名和密码')
print('(游客模式)')
4.远程操作
subprocess模块远程操作工具
方法
.Popen('dos命令', 给参数赋值)
结果是bytes类型数据,基于网络传输远程控制,需要对数据进制传输。
在中国的 windows系统 电脑内部编码是 gbk编码 文件是utf-8 但是系统内部又不一样。
ps:
tasklist 查看进程 正在执行的程序
net stop 服务名称 管理器权限执行 --> 停止xxx服务
C:\Users\13600>tasklist
映像名称 PID 会话名 会话
System Idle Process 0 Services 0 8 K
System 4 Services 0 148 K
Registry 148 Services 0 27,128 K
···
import subprocess
res = subprocess.Popen('tasklist',
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
"""
stdout: Optional[_FILE] = ...,
stderr: Optional[_FILE] = ...,
"""
data = res.stdout.read()
print(data.decode('gbk'))
"""
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 K
System 4 Services 0 148 K
"""