python杂记
邮件发送
邮件发送使用的是smtplib.SMTP
这个包,使用范例如下:
from smtplib import SMTP as smtp
Send = "邮件名"
Password = "密码"
Subject = "主题"
# 需要发送的内容消息
text = MIMEText(Msg, _charset="UTF-8")
text["From"] = Send
text["To"] = "" # 邮件接收方
text["Subject"] = Subject
s = smtp("smtp.163.com", 25)
try:
s.login(Send, Password) # 连接
s.sendmail(Send, self.to, text.as_string()) # 发送邮件
except Exception as e:
raise e
文件简单操作
文件操作使用的是shutil
和os
关于文件的操作,示例为:
import shutil
import os
shutil.move("源文件地址", "目的地址") # 移动文件
os.remove("文件地址") # 删除文件
日志文件生成
日志文件的简单使用范例:
import logging
# 日志格式
LOG_FORMAT = "%(asctime)s***%(levelname)s***%(filename)s->%(lineno)d***%(message)s"
# 时间格式
DATE_FORMAT = "%m/%d/%Y %H:%M:%S"
# 日志格式配置 只生效一次
logging.basicConfig(filename='my.log', level=logging.DEBUG,
format=LOG_FORMAT, datefmt=DATE_FORMAT)
# 输出日志信息
logging.error(e)
时间日期操作
时间操作利用的是datetime
模块下的两个类。其中的date
是简单的时间类,只有年,月,日。timedelta
是表示的日期与日期之间的跨度,支持基本的四则运算。
timedelta = date1 - date2 # timedelta是date1与date2之间的时间跨度
date2 = date1 + timedelta #
timedelta1 = timedelta2 + timedelta3 # 时间的四则运算
date.today() + timedelta(-1) # 昨天的日期
多线程
多线程使用的是threading
模块,该模块除了Thread这个类以外,还有许多同步机制。使用Thread类的方法主要有三种:
- 创建一个Thread实例,传给它一个参数
- 创建一个Thread实例,传给它一个可调用的类实例
- 派生一个Thread子类,并创建子类的实例
这里介绍第三个方法:
from threading import Thread
class _Thread(Thread):
"""
继承Thread类,自动创建线程
"""
def __init__(self, ftp_url):
Thread.__init__(self)
pass
def run(self):
"""
调用线程start后将执行的部分
"""
_run()
pass
def _run(self):
"""
实际需要执行的内容
"""
pass
if __name__ == "__main__":
x = _Thread() # 创建实例
x.start() # 运行实例
x.join() # 等待线程结束
执行系统命令
执行系统命令使用模块subprocess
,该模块能替代以前版本的调用系统命令函数。改方法的使用范例为:
import subprocess
x = subprocess.run("需要执行的命令", shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, universal_newlines=True)
# stdout=subprocess.PIPE输出管道
# stderr=subprocess.PIPE错误管道
# 获取命令的返回码,如果不是0,将抛出错误
try:
x.check_returncode()
pass # 命令成功执行
except subprocess.CalledProcessError as e:
return x.returncode # 命令非正常退出