python标准库
目录
1. files
1)路径
2)目录
3)文件创建时间
4)文件复制
5)zip文件
6)csv文件
6)json文件
2. SQLite
3. time/datetime
1)time
2)datetime(模块)
a. datetime类
b. timedelta
4. Random Values
5. Email
邮箱服务商设置:
安全凭证:
发送html:
6. web
1)open the browser
2)html
7. command line argument
8. run external programs
1)运行命令行
2)运行文件
参数:
返回对象:
python有全面的软件包和模块库
1. files
1)路径
2)目录
-
Path(): 相当于 . ,返回上一级目录
-
Path.cwd():获取当前工作目录,即vscode打开的文件夹
-
Path.home():获取用户主目录
-
path.mkdir(exist_ok=True):创建目录,如果已存在则不报错。path为指定的目录名称
-
path.rmdir():删除当前目录
-
path.rename(" "):修改目录名称
-
path.iterdir():目录迭代,返回的是一个生成器,要获取文件需要用for循环
-
path.glob("*.py"):递归搜索当前目录中的所有 Python 文件
-
path.rglob("*.py"):递归搜索当前目录及其所有子目录中的所有 Python 文件
WindowsPath:windows系统中使用的标准
PosixPath:Unix、Linux、Mac OS X等系统中使用的标准
3)文件创建时间
path.stat().st_ctime:获取文件创建时间戳
ctime(时间戳):转换为年月日
4)文件复制
5)zip文件
创建一个zip文件并添加文件:
读取zip文件并提取内容:
6)csv文件
csv代表逗号分隔值
-
写文件:
-
读文件:读取文件时光标会自动定位到文件开头,读完时光标在末尾,此刻再读是读不到内容的。
注:读出的内容为字符串,若要将其视为数字需要进行转换。
6)json文件
使用 Javascript语法来描述数据对象。(更常用)
-
写文件:首先应将数据转换为json格式:json.dumps()。再通过path.write_text()写文件。
-
读文件:通过path.read_text()读文件,再通过json.loads(data)转换为列表。
2. SQLite
PK:每个id都唯一值
Not:该数据不能为空。
-
写入数据库:首先应连接数据库,写入指令为“INSERT INTO xxx VALUSE(?,?,?)”,几个问号表示有几列。写入时将数据转换为元组。
-
读数据库:首先应连接数据库,读指令为“SELECT * FROM xxx”。读数据库时有一个游标。
-
cursor.fetchall是一个常用于从数据库中检索所有行的方法。当你执行了一个查询并且想要获取它的所有结果时,fetchall会返回一个包含结果集中所有记录的元组列表。
3. time/datetime
1)time
-
time.time(): 返回时间戳
计算执行时间
2)datetime(模块)
a. datetime类
-
datetime(年,月,日):将日期转换为datetime对象。
-
datetime.now():返回当前时间
-
datetime.strptime("2018/01/01", "%Y/%m/%d"):将字符串格式的日期转换为Python的datetime对象。
-
dt.strftime("%Y-%m-%d %H:%M:%S"):将datetime对象反向转换为字符串。
-
dt.year,dt.month:返回年月。
b. timedelta
71828:表示19:57的总秒数
若要加减时间,则可通过加减timedelta(days=1)等
4. Random Values
-
random.random():生成0-1的随机浮点数
-
random.randint(1, 100):生成随机整数
-
random.choice(['apple', 'banana', 'cherry'],k=?):生成随机?个选择
-
"分隔符选择".join(random.choices("abcdefghi", k=5))
-
生成随机密码/验证码:print("".join(random.choices(string.ascii_letters + string.digits, k=5)))
-
random.shuffle(list):打乱列表,无返回值,是一个操作函数,直接操作变量。
5. Email
发送:创建邮件,通过stmp发送邮件。可发送纯文本或html
邮箱服务商设置:
-
QQ邮箱:使用SMTP服务器
smtp.qq.com
,端口465(SSL) -
163邮箱:
smtp.163.com
,端口465 -
Gmail:
smtp.gmail.com
,端口587(TLS)
安全凭证:
-
需使用邮箱密码或专用授权码(QQ/163等邮箱需在设置中生成授权码)
-
启用SMTP服务(邮箱设置中开启)
发送html:
其中substitute表示替换模板中的参数name。
6. web
1)open the browser
-
webbrowser.open("网址")
2)html
vscode中!加回车就可以快速生成前端代码模板
7. command line argument
默认情况下,运行python文件传递的参数有一个,为['app.py'],但也可以通过python app.py xxx 传递其他参数,此时参数为['app.py', '1234']。
8. run external programs
subprocess.run(["command", "argument"])
1)运行命令行
windows:
linux:
2)运行文件
在程序中运行其他python文件,可用来作为自动化脚本
completed = subprocess.run(["python", "01-HelloWorld/app.py"],check=True, capture_output=True,text=True)
参数:
-
argv(必须):要执行的命令;类型:字符串或字符串列表。
-
check = True:是否检查返回码,默认为false。设为True时,返回码非0时抛出CalledProcessError
-
capture_output=True:捕获子进程的输出(标准输出 stdout 和标准错误 stderr)
默认情况(false):如果不设置,子进程的输出会直接打印到终端,无法在程序中获取
行为:
-
设置为True等价于同时设置
stdout=subprocess.PIPE
和stderr=subprocess.PIPE
-
会将子进程的输出保存在返回对象的
.stdout
和.stderr
属性中
-
-
text=True:以文本形式处理输入输出,将输出解码为字符串(而不是字节)
默认情况(false):如果不设置,捕获的输出会是原始字节
行为:
-
将捕获的输出自动转换为 UTF-8 字符串
-
相当于旧参数
universal_newlines=True
(Python 3.7+ 更推荐使用text
)
-
-
stdin:标准输入源。可选值:
None
:无输入(默认)subprocess.PIPE
:创建管道文件对象
文件描述符(整数)
执行控制
-
shell:是否通过系统 shell 执行。
-
cwd(字符串):设置工作目录。
subprocess.run(["ls"], cwd="/tmp")
-
timeout(数字):超时时间(秒),超时抛出
TimeoutExpired
异常subprocess.run(["sleep", "10"], timeout=5)
编码处理
-
encoding(字符串):指定文本编码,需配合
text=True
使用 -
errors (字符串):编解码错误处理策略,常用值:
'strict'
,'ignore'
,'replace'
subprocess.run(..., errors="ignore")
环境控制
-
env (字典):自定义环境变量。
默认:继承当前环境
custom_env = {"PATH": "/usr/bin", "MY_VAR": "value"} subprocess.run(["cmd"], env=custom_env)
返回对象:
函数返回 CompletedProcess
对象,包含:
result = subprocess.run(...) print(result.args) # 执行的命令 print(result.returncode) # 返回码 (0=成功) print(result.stdout) # 标准输出(当被捕获时) print(result.stderr) # 标准错误(当被捕获时)