Python做一个简单的抽奖程序

        今天刚上班,女朋友给我来了个需求,她需要一个抽奖程序,需求如下:

        1、要一个抽奖程序,输入为很多图片,输出为随机选出几张符合要求的图片

         2、简单快速,不用界面也行,她早上就要

         我只是一个小小的码农,怎么会做如此高大上的东西,我甚至于一口回绝。她抛出了极具诱惑性的条件,晚饭多加一瓶可乐。啥,这么看不起我,就一瓶可乐,呵呵,年轻人不讲武德,耗子尾汁。她又说,再加五块,接不接。好了,我接,这个需求必须接。倒不是看上了那五块钱,毕竟钱财乃身外之物,我也视金钱如粪土,嗯,真香。

        思路:

        1、她要的紧急,用Python写,也方便。

         2、整个目录下分为了三个部分,①输入的图片文件夹,不能让她手动输入,她会杀了我的。②输出的图片文件夹,也就是随机选出的结果。③脚本文件和配置文件xml

         3、程序初始化,读取配置文件中的输入文件夹和输出文件夹的名字,并且清空输出文件夹,因为可能程序会多次运行。

         4、主体程序代码异常简单,就是一个random而已。

工程截图:

end_pic -> 脚本程序随机选出的文件的放置目录,拷贝一份放到end_pic

pictures -> 要随机的所有图片的放置目录

choujiang.py -> 抽奖脚本代码

config.xml -> 配置文件

直接看吧,翠花,上酸菜

1、先给pictures里放好多好多图

2、config.xml

<?xml version="1.0" ?>
<config>
	<path>pictures</path>
	<end_pic>end_pic</end_pic>
</config>

3、choujiang.py 原谅我拼音命名大法

# -*- coding: UTF-8 -*-
import random
import ctypes
import time
import os
from xml.dom.minidom import parse
import datetime
import shutil
 
picture_list = []
path = ''
end_pic = 'end_pic'
luck_num = 2 #抽出几张图片 最好数量远小于抽奖池
 
 
def build_path(args) :
	end_path = os.getcwd()
	for arg in args :
		end_path = end_path + '\\' + arg
	return end_path
 
def init_pic() :
	end_path = build_path([path])
	g = os.walk(end_path)
	for _,_,filelist in g :
		for filename in filelist:
			if filename.endswith('jpg'):
				picture_list.append(filename)
	if picture_list :
		return True, end_path
	return False, None
 
#随机图片
def random_pic_index() :
	return picture_list[random.randint(0, len(picture_list)-1)]
 
#读XML配置
def read_xml() :
	doc = parse('./config.xml')
	root = doc.documentElement
	global path, random_time
	path = root.getElementsByTagName('path')[0].firstChild.data
	end_pic = root.getElementsByTagName('end_pic')[0].firstChild.data
 
#清空目标文件夹
def clear_end_pic() :
	path = os.getcwd() + '\\' + end_pic
	#print ('======%s' %str(path))
	for file in os.listdir(path) :
		file_data = path + '\\' + file
		if os.path.isfile(file_data) :
			#print(file_data)
			os.remove(file_data)
 
def main() :
	read_xml()
	flag, end_path = init_pic()
	if not flag or not end_path :
		print('Init error, not have pictures(filename with .jpg)')
		exit (1)
	clear_end_pic()
	#给随机数一个种子
	random.seed(int(time.time()))
	luck_filenames = []
	#可能会有重复的 多跑十次,还有重复就算了
	for i in range(0, luck_num+10) :
		filename = random_pic_index()
		if filename in luck_filenames :
			continue
		luck_filenames.append(filename)
		print('%s  picture: %s' %(datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S'), filename))
		#拷贝文件
		shutil.copyfile(end_path+'\\'+filename, os.getcwd()+'\\'+end_pic+'\\'+filename)
		if len(luck_filenames) >= luck_num :
			break
	input('Please enter and then exit!!!')
	
main()

在Python3环境下,运行脚本choujiang.py,运行后截图如下:

end_pic文件夹下会拷贝一份已经选出的图片:

一切搞定,五块钱到手~~~~

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值