Day21.Python项目案例
时间:2022-07-25
本文章向大家介绍Day21.Python项目案例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
项目实操
1、批量修改文件名 2、发送邮件 --- 打卡领取 可配置。 3、批量合成头像图片 4、股票查询程序开发 --- 打卡领取 5、抽奖程序(源码奉献) - 页面顺时针抽奖 - 滚动抽奖
0、价值2亿的人工智能对话代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
while True:
print(input().strip("吗??")+"!")
1、Python批量修改文件名
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'JackFeng'
#批量修改文件名
#批量修改图片文件名
#功能
#以批量修改某文件夹下所有图片名称为例
# 注释超详细,万能模板,读者可举一反三,适当修改模板,效果显著!
import os
import sys
import re
def renameall():
#filelist = os.listdir(r"文件所在路径") #待修改文件夹
filelist = os.listdir(r"C:\Users\66860\Desktop\测试文件")
print("修改前"+str(filelist)) #输出文件夹中包含的文件
currentpath = os.getcwd() #得到进程当前工作目录
os.chdir(r"C:\Users\66860\Desktop\测试文件") #将当前工作目录修改为待修改文件夹的位置
a=input("请输入你要更改的名称:" )
num = 1 # 名称变量
print(a)
for fileName in filelist: #遍历文件夹中所有文件
pat=".+.(pdf|PDF)" #匹配文件名正则表达式 # 此处为修改pdf案例,故使用pdf格式
pattern = re.findall(pat,fileName) #进行匹配
# print(pattern)
os.rename(fileName,(str(a)+str(num)+'.'+pattern[0])) #文件重命名
num += 1 # 改变编号,继续下一项
# os.rename(fileName, (str(a) + '.' + pattern[0]))
print("=========---风-阶-限---===========")
os.chdir(currentpath) #改回程序运行前的工作目录
sys.stdin.flush() #刷新
print("修改后:"+str(os.listdir(r"C:\Users\66860\Desktop\测试文件"))) #输出修改后文件夹中包含的文件
print("==========--修改完成--===========")
renameall()
3、批量合成头像
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'JackFeng'
# @Time : 2020/5/18 10:14
# @Author : JackFeng
# @FileName: Photo.py
# @Software: PyCharm
# @Blog :http://www.a2data.cn/
import PIL.Image as Image
import os
# 定义初始图片的位置
x = 0
y = 0
# 获取下载的头像文件
curr_dir = "D://"
ls = os.listdir(curr_dir + '1')
print(ls)
# 设定好友微信墙尺寸 Image.new() 方法。
image = Image.new("RGB", (600, 600))
# 打开微信好友图片 Image.open() 方法。
# img = Image.open(r"D:/1/1.png")
# 将微信头像重置为小图 使用 img.resize() 方法
# img = img.resize((50, 50), Image.ANTIALIAS)
#将照片 黏贴到我们的微信墙中 使用 image.paste() 方法。
# image.paste(img, (x * 50, y * 50))
#最后将制作完成的照片墙保存下来,使用 image.save() 方法。
# img = image.save("D:\1\WeChat_Friends.jpg")
# 遍历文件夹的图片
for file_names in ls:
print(file_names)
try:
# 依次打开图片
img = Image.open(curr_dir + "1/" + file_names)
print(img)
except IOError:
continue
else:
# 重新设置图片的大小
img = img.resize((150, 150), Image.ANTIALIAS)
# 将图片粘贴到最终的照片墙上
image.paste(img, (x * 100, y * 150))
# 设置每一行排13个图像
x += 1
if x == 6:
x = 0
y += 1
# 保存图片为WeChat_Friends.jpg
img = image.save(curr_dir + "WeChat_Friends.jpg")
4、抽奖中书籍
#!/usr/bin/env python # -*- coding:utf-8 -*-__author__ = 'Jack'
# @Time : 2019/8/22 11:07# @Author : JackFeng# @Software: PyCharm# @Blog :http://www.a2data.cn/
class Luckgame:
# 导入弹窗模块
import tkinter.messagebox as mbox
# 导入tkinter
import tkinter as tk
# 导入线程模块
import threading
import time
def __init__(self):
self.window = self.tk.Tk()
self.window.title('DataScience-幸运抽奖')
self.window.minsize(330, 330)
# 设置初始变量
# 设置界面
self.set_label_btn()
# 设置菜单
self.set_menu()
# 奖品列表
self.gifts = [self.lab1, self.lab2, self.lab3, self.lab4, self.lab5, self.lab6, self.lab7, self.lab8, self.lab9,
self.lab10, self.lab11, self.lab12]
# #是否开启循环的标志
# self.isloop = False
# 是否终止转盘
self.run_flag = False
self.window.mainloop()
# 设置菜单
def set_menu(self):
# 创建总菜单
menubar = self.tk.Menu(self.window)
# 创建一个下拉菜单,并且加入文件菜单
filemenu = self.tk.Menu(menubar, tearoff=0)
# 创建下来菜单的选项
filemenu.add_command(label="退出游戏", command=self.window.quit)
# print author的函数
def show_author():
self.mbox.showinfo(title='微信公众平台:DataScience', message='DataScience:Ai_Craziest')
filemenu.add_command(label="作者", command=show_author)
# 将文件菜单作为下拉菜单添加到总菜单中,并且将命名为操作
menubar.add_cascade(label="操作", menu=filemenu)
# 显示总菜单
self.window.config(menu=menubar)
def set_label_btn(self):
self.lab1 = self.tk.Label(self.window, text='原则', bg='red')
self.lab1.place(x=20, y=20, width=60, height=60)
self.lab2 = self.tk.Label(self.window, text='Hiven编程指南', bg='white')
self.lab2.place(x=90, y=20, width=60, height=60)
self.lab3 = self.tk.Label(self.window, text='IDEAn操作手册', bg='white')
self.lab3.place(x=160, y=20, width=60, height=60)
self.lab4 = self.tk.Label(self.window, text='MySqln必知必会', bg='white')
self.lab4.place(x=230, y=20, width=60, height=60)
self.lab5 = self.tk.Label(self.window, text='SQLnCook', bg='white')
self.lab5.place(x=230, y=90, width=60, height=60)
self.lab6 = self.tk.Label(self.window, text='PythonnCook', bg='white')
self.lab6.place(x=230, y=160, width=60, height=60)
self.lab7 = self.tk.Label(self.window, text='Pythonn机器学习', bg='white')
self.lab7.place(x=230, y=230, width=60, height=60)
self.lab8 = self.tk.Label(self.window, text='Pythonn机器实训', bg='white')
self.lab8.place(x=160, y=230, width=60, height=60)
self.lab9 = self.tk.Label(self.window, text='大数据n面试题', bg='white')
self.lab9.place(x=90, y=230, width=60, height=60)
self.lab10 = self.tk.Label(self.window, text='机器学习n个人笔记', bg='white')
self.lab10.place(x=20, y=230, width=60, height=60)
self.lab11 = self.tk.Label(self.window, text='数据挖掘n概念与技术', bg='white')
self.lab11.place(x=20, y=160, width=60, height=60)
self.lab12 = self.tk.Label(self.window, text='Handbookn(原版)', bg='white')
self.lab12.place(x=20, y=90, width=60, height=60)
# 开始按钮
self.btn_go = self.tk.Button(self.window, text='开始', command=self.start_stak)
self.btn_go.place(x=90, y=125, width=50, height=50)
# 停止按钮
self.btn_stop = self.tk.Button(self.window, text='结束', command=self.stop_run)
self.btn_stop.place(x=160, y=125, width=50, height=50)
def run_gifts(self):
# while循环计数用变量i
i = 0
# 循环所有label,依次改变label的颜色,将其变为红色
while True:
if self.run_flag:
self.mbox.showinfo(title='感谢您对我的关注,温馨提示', message='DataScience:恭喜您获得:' + self.gifts[i - 1]['text'] + '电子版书籍')
self.mbox.showinfo(title='如果对您有帮助,请点赞分享', message='请前往微信公众号:DataScience,领取属于您的奖品!!!')
self.mbox.showinfo(title='如果对您有更多需要,请将此文分享到朋友圈', message='保留三小时以上截图哦,发送致DataScience后台,那么您可获取任意三本!!')
self.mbox.showinfo(title='本公众号第一次小互动,感谢您的参与', message='谢谢您的参与,下期有你更精彩!!')
# 是否循环转盘参数重置
self.run_flag = False
return
try:
# 添加一个延时操作
self.time.sleep(0.1)
# 循环所有label,将所有label的颜色变为白色
for v in self.gifts:
v['bg'] = 'white'
self.gifts[i]['bg'] = 'red'
i += 1
# label组件计数归零
if i >= len(self.gifts):
i = 0
except:
pass
def stop_run(self):
self.run_flag = True
# 开启线程,单独跑一个循环的函数
def start_stak(self):
# 新建线程
tread = self.threading.Thread(target=self.run_gifts)
# 开始线程
tread.start()
# #打开循环线程的标志
# self.isloop = True
# 调用Luckgame游戏对象
nsf = Luckgame()
5、滚动抽奖篇
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Jack'
# @Time : 2020/6/22 11:07
# @Author : JackFeng
# @FileName: Lotto.py
# @Software: PyCharm
# @Blog :http://www.a2data.cn/
import sys
if sys.version_info[0] == 2:
import Tkinter
from Tkinter import *
else:
import tkinter as Tkinter
from tkinter import *
import random
data = ['Kath', '大枫', 'Jack', 'Shon','DuRuo']
going = True
is_run = False
def lottery_roll(var1, var2):
global going
show_member = random.choice(data)
var1.set(show_member)
if going:
window.after(50, lottery_roll, var1, var2)
else:
var2.set('恭喜 {} !!!'.format(show_member))
going = True
return
def lottery_start(var1, var2):
global is_run
if is_run:
return
is_run = True
var2.set('幸运儿是你吗。。。')
lottery_roll(var1, var2)
def lottery_end():
global going, is_run
if is_run:
going = False
is_run = False
if __name__ == '__main__':
window = Tkinter.Tk()
window.geometry('405x320+250+15')
window.title(' DataScience 滚 动 抽 奖 器')
bg_label = Label(window, width=70, height=24, bg='#ECf5FF')
bg_label.place(anchor=NW, x=0, y=0)
var1 = StringVar(value='即 将 开 始')
show_label1 = Label(window, textvariable=var1, justify='left', anchor=CENTER, width=17, height=3, bg='#BFEFFF',
font='楷体 -40 bold', foreground='black')
show_label1.place(anchor=NW, x=21, y=20)
var2 = StringVar(value='幸运儿是你吗。。。')
show_label2 = Label(window, textvariable=var2, justify='left', anchor=CENTER, width=38, height=3, bg='#ECf5FF',
font='楷体 -18 bold', foreground='red')
show_label2.place(anchor=NW, x=21, y=240)
button1 = Button(window, text='开始', command=lambda: lottery_start(var1, var2), width=14, height=2, bg='#A8A8A8',
font='宋体 -18 bold')
button1.place(anchor=NW, x=20, y=175)
button2 = Button(window, text='结束', command=lambda: lottery_end(), width=14, height=2, bg='#A8A8A8',
font='宋体 -18 bold')
button2.place(anchor=NW, x=232, y=175)
window.mainloop()
- struts2: 玩转 rest-plugin
- 设置系统环境变量立即生效的VBS脚本
- velocity模板引擎学习(1)
- mybatis 3.x 缓存Cache的使用
- XStream、JAXB 日期(Date)、数字(Number)格式化输出xml
- mac: vmware fusion中cent os启动假死的解决办法
- java:hibernate + oracle之坑爹的clob
- 启用WCF NetTcpBinding的共享端口
- asp中的md5/sha1/sha256算法收集
- UE4从零搭建CF游戏关卡(蓝图篇)
- 通用的序列号生成器库
- 利用Geneva开发SOA的安全模型
- STOMP协议介绍
- ADO.NET实体框架连接串引发的异常:Unable to load the specified metadata resource
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一文搞定 Eureka 集群高可用配置
- SpringBoot三招组合拳,手把手教你打出优雅的后端接口
- 在bootstrap中col-md-offset-* 偏移不起作用
- ES6 模糊查询 智能联想(不区分大小写)
- 干货分享 | K8s 、Docker 常用命令汇总
- 干货 | YOLOV5 训练自动驾驶数据集,并转Tensorrt,收藏!
- Vue中watch的简单应用
- Go 使用标准库 net/rpc 包
- 强大的 Stream API(三)
- 微软发布代码智能新基准数据集CodeXGLUE,多角度衡量模型优劣
- 强大的 Stream API(二)
- 无限想象空间,用Python玩转3D人体姿态估计
- 300亿美元,AMD为什么要买Xilinx?
- Angular5.0.0新特性
- 用Python实现坦克大战游戏 | 干货贴