2025/03/19 10:55:43
使用crontab
crontab -e
# 添加定时任务,每5分钟执行一次
*/5 * * * * /usr/bin/python3 /home/mqw/project/pushplus.py >> /home/mqw/project/pushplus_monitor.log 2>&1
# 添加开机自启动任务
@reboot /usr/bin/python3 /home/mqw/project/pushplus.py >> /home/mqw/project/pushplus_monitor.log 2>&1
# 检查crontab是否正常设置
crontab -l
2025/02/10 11:50:53
## 联系方式
<div align="center"><table><tbody><tr><td align="center"><b>个人QQ</b><br><img src="https://wmimg.com/i/1119/2025/02/67a96bb8d3ef6.jpg" width="250" alt="作者QQ"><br><b>QQ:154578485</b></td><td align="center"><b>QQ交流群</b><br><img src="https://wmimg.com/i/1119/2025/02/67a96bb8d6457.jpg" width="250" alt="QQ群二维码"><br><small>群内会更新个人练手的python项目</small></td><td align="center"><b>微信赞赏</b><br><img src="https://wmimg.com/i/1119/2024/09/66dd37a5ab6e8.jpg" width="500" alt="微信赞赏码"><br><small>要到饭咧?啊咧?啊咧?不给也没事~ 请随意打赏</small></td><td align="center"><b>支付宝赞赏</b><br><img src="https://wmimg.com/i/1119/2024/09/66dd3d6febd05.jpg" width="300" alt="支付宝赞赏码"><br><small>如果觉得有帮助,来包辣条犒劳一下吧~</small></td></tr></tbody></table></div>
---
### 📚 推荐阅读
- [wx群聊总结助手:一个基于人工智能的微信群聊消息总结工具,支持多种AI服务,可以自动提取群聊重点内容并生成结构化总结](https://github.com/Vita0519/wechat_summary)
- [历时两周半开发的一款加载live2模型的浏览器插件](https://www.allfather.top/archives/live2dkan-ban-niang)
- [PySide6+live2d+小智 开发的 AI 语音助手桌面精灵,支持和小智持续对话、音乐播放、番茄时钟、书签跳转、ocr等功能](https://www.bilibili.com/video/BV1wN9rYFEze/?share_source=copy_web&vd_source=f3d1033524bcd51cf10e8312ef8376ff)
- [github优秀开源作品集](https://www.allfather.top/mol2d/)
---
2025/01/20 16:19:04
2024/11/29 11:59:23
# 统计不同镇街下的不同目录数量
catalogue_counts = (df.groupby('镇街名称')['目录名称'].nunique()
.reset_index(name='目录数量').sort_values(by='目录数量', ascending=False))
# 统计镇街的目录下的指标数量情况
tab_counts = (df['目录名称'].groupby(df['镇街名称']).value_counts()
.reset_index(name='指标数量').sort_values(by='指标数量', ascending=False).head(20))
# 统计访问专题分布
topic_counts = df['目录名称'][df['镇街名称']=='万江'].groupby(df['镇街名称']).value_counts()
2024/11/21 10:17:02
将宽格式数据转换为长格式数据。
# 导入 Pandas 库
import pandas as pd
# 创建示例数据集(宽格式)
data = {
'姓名': ['张三', '李四', '王五'],
'数学成绩': [90, 85, 92],
'英语成绩': [88, 92, 89],
'物理成绩': [95, 88, 90]
}
df = pd.DataFrame(data)
print(f"原始数据集 (宽格式): \n{df}")
# 使用 melt 方法将宽格式数据转换为长格式数据
df_melted = df.melt(id_vars='姓名', value_vars=['数学成绩', '英语成绩', '物理成绩'],
var_name='科目', value_name='成绩')
print(f"使用 melt 方法转换后的数据集 (长格式): \n{df_melted}")
# 使用 pivot 方法将长格式数据转换回宽格式数据
df_pivoted = df_melted.pivot(index='姓名', columns='科目', values='成绩')
print(f"使用 pivot 方法转换后的数据集 (宽格式): \n{df_pivoted}")
# 创建包含多个值的示例数据集
data = {
'姓名': ['张三', '张三', '李四', '李四', '王五', '王五'],
'科目': ['数学成绩', '英语成绩', '数学成绩', '英语成绩', '数学成绩', '英语成绩'],
'成绩': [90, 88, 85, 92, 92, 89],
'学期': ['第一学期', '第一学期', '第一学期', '第一学期', '第一学期', '第一学期']
}
df_long = pd.DataFrame(data)
print(f"包含多个值的长格式数据集: \n{df_long}")
# 使用 pivot 方法将长格式数据转换为宽格式数据
df_pivoted = df_long.pivot(index='姓名', columns='科目', values='成绩')
print(f"使用 pivot 方法转换后的数据集 (宽格式): \n{df_pivoted}")
# 创建包含重复值的示例数据集
data = {
'姓名': ['张三', '张三', '李四', '李四', '王五', '王五'],
'科目': ['数学成绩', '数学成绩', '英语成绩', '英语成绩', '物理成绩', '物理成绩'],
'成绩': [90, 91, 85, 86, 92, 93]
}
df_long = pd.DataFrame(data)
print(f"包含重复值的长格式数据集: \n{df_long}")
# 使用 pivot_table 方法处理重复值
df_pivoted = df_long.pivot_table(index='姓名', columns='科目', values='成绩', aggfunc='mean')
print(f"使用 pivot_table 方法处理重复值后的数据集 (宽格式): \n{df_pivoted}")
2024/11/13 08:50:12
# 下载验证码图片
page.ele('t:img@@class:login-code-img').get_screenshot('code.png')
# 利用ddddocr识别验证码
import ddddocr
ocr = ddddocr.DdddOcr()
with open('code.png', 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
print('识别出的验证码为:' + res)
page.ele('t:input@@class:el-input__inner@@placeholder=验证码').input(res)
2024/11/07 15:12:34
分析日志文件并发送报警邮件
#!/bin/bash
ERROR_COUNT=$(grep -c "ERROR" /var/log/myapp.log)
if [ $ERROR_COUNT -gt 0 ]; then
echo "Detected $ERROR_COUNT errors in the log file." | mail -s "Error Alert" admin@example.com
fi
2024/11/06 14:36:09
import pymysql
# 连接到 MySQL 数据库
connection = pymysql.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
try:
with connection.cursor() as cursor:
# 定义插入语句
insert_query = """
INSERT INTO hunan_a (id, column1, column2, column3, column4, column5, column6, column7)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
"""
# 示例数据列表
data = [
(id[i], 'h', index[i], timel[i], size[i], hit[i], titlel[i], lz[1]) for i in range(20)
]
# 批量插入数据
cursor.executemany(insert_query, data)
# 提交事务
connection.commit()
except Exception as e:
print(f"Error: {e}")
# 回滚事务
connection.rollback()
finally:
# 关闭连接
connection.close()
2024/11/05 17:03:12
在Markdown中创建流程图,你可以使用Mermaid语法。Mermaid是一种基于文本的图表工具,它允许你使用文本和代码来创建图表,然后渲染成图形。以下是一个简单的流程图示例:
graph TD
A[开始] --> B{决策点}
B -->|选项1| C[结果1]
B -->|选项2| D[结果2]
C --> E[结束]
D --> E
以下是一些基本的Mermaid流程图语法:
graph TD:定义流程图的方向为从上到下。
A --> B:表示从节点A到节点B的箭头。
A --- B:表示从节点A到节点B的虚线箭头。
A[文本]:定义节点A的文本。
{决策点}:表示决策点,可以是菱形。
|文本|:表示条件或操作的文本。
你可以根据需要创建更复杂的流程图,包括循环、并行路径和其他逻辑结构。Mermaid的官方文档提供了更详细的语法和示例,可以帮助你创建更复杂的图表。访问Mermaid Live Editor(https://mermaid-js.github.io/mermaid-live-editor/)可以在线测试和编辑Mermaid图表。
2024/10/30 14:41:43
案例:先对列表进行平方,再筛选出大于10的数,最后计算这些数的累积和
from functools import reduce
num=[1,2,3,4,5]
result=reduce(lambda x,y:x+y,
filter(lambda x:x>10,
map(lambda x:x**2,num)))
print(result) # 输出: 29 (因为 16 + 9 = 25)
在这个例子中,map()、filter()和reduce()就像流水线上的三个工人,第一个工人把元素平方,第二个工人只选大于10的元素,第三个工人把剩下的元素加在一起。
总体来说:
map() :批量改造元素,将函数应用到每个元素上。
filter() :筛选元素,只保留符合条件的元素。
reduce() :归并元素,把所有元素合并成一个。