版权申明:此博文后期必火,本人原创,转载请注明出处。

前言:python这个东西,跟按键精灵类似,都属于脚本语言。按键精灵编写脚本的时候,有个很好使的功能,那就是打包的exe程序可以添加附件,运行程序的时候能够释放附件并进行一些操作。按键精灵除了不能在附件里面添加exe的文件之外,基本上其他附件都支持添加。相似的软件还有易语言,易语言的资源表里是可以加入图片和音乐等东西的。

1. 程序内加入附件的作用:

现在脚本写程序时,为了保证文件的轻便性,最好是一个单独的exe文件就行了,不要安装或者依赖一大堆的文件夹,我们采用在文件程序里加入附件并打包exe单文件发布,用户运行脚本后自动根据程序释放带入的资源文件到计算机本地,用户只需要这一个单文件,无需看到其他碍眼的一堆文件夹等非主程序。

2.类似的应用场景:

2.1.众所周知,python直接打包exe是不带图标的,我们可以通过此方式在文件里加入图片资源,然后打包的exe释放图片资源作为程序自身的图标。同理,音乐之类的也能打包,然后作为程序自身的提示音bgm

2.2现在易语言基本上已经是编写自动化游戏脚本与外挂的王者了,但是他们那群人万万没想到,其实python也是个王者。怎么说呢,大漠插件,乐玩插件这种dll文件,python打包的exe也能直接释放到本地,并且进行注册等操作,而且python更牛逼的是,易语言的exe基本上一释放文件就会报毒被清理,甚至一个空白的exe都会报毒,而python从来没有报毒的说法。于是乎,python资源里加入dll文件,sqlite3文件,编译成独立的exe作为游戏脚本主程序显得理所当然。

2.3python在游戏脚本方面的优势:这个共有三点:

2.3.1.可以直接拿易语言编译的dll文件进行调用,基于32位的ctypes库

2.3.2.可以直接拿已经注册好的大漠插件,乐玩插件等com组件进行调用

2.3.3.python语法精炼,编写程序很快,至于开发gui方面,比起易语言稍微逊色,但是你可能听说过pyqt?其实说老实话,pyqt不是python自带的,而且学习成本高,编译的exe还那么臃肿,不是很好的选择。在游戏脚本编程方面,以及任何小工具方面,只要不追求美观,通通用tkinter来实现吧!

3.python3文件内加入附件的思路:

首先选择附件,将附件编码成特定的字符串,这里示例程序编码规则为filecode@文件名@文件后缀=二进制文件字符串

因为这是字符串,可以直接放在py文件里面,发布的时候用pyinstaller一块儿打包

释放附件:传入附件字符串参数,自动根据附近字符串解析附件名称,类型,询问保存路径,然后以二进制方式新建一个对应的文件并把解码后的二进制数据写入该文件

如果是临时文件,可以在写入完成后进行自定义延时删除。

4.python资源储存的扩展:

可以通过此方式,用mqtt协议进行文件资源传输。扩展项目:基于mqtt协议的小型QQ,支持文字聊天私聊,群聊,文件传输,保存,转发。

5.核心代码部分:

#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
# File  : 资源无损编码储存.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date  : 2019/6/2import base64
from tkinter.filedialog import *
from tkinter.messagebox import *
from os import remove
from time import sleep
def get_filePath_fileName_fileExt(fileUrl):#获取文件上级目录,文件名称,文件后缀filepath, tmpfilename = os.path.split(fileUrl)shotname, extension = os.path.splitext(tmpfilename)return filepath, shotname, extensiondef btn_savefiles(filecode=""):if filecode.startswith("filecode"):filetend = filecode.split('"')[0].split("@")[2].replace("=","").replace(" ","")filename = filecode.split('"')[0].split("@")[1]filecontent = filecode.split(" ")[2]savepath = asksaveasfilename(defaultextension=".%s" % filetend, filetypes=[("file", ".%s" % filetend)],initialfile="%s.%s" %(filename,filetend), title="选择路径并设置你要保存的文件名")if savepath!="":tmp = open(savepath, "wb+")content = base64.b64decode(filecontent)tmp.write(content)tmp.close()return savepathelse:showerror("错误","没有传入可写的二进制文件数据!")def btn_selectfile():fpath = askopenfilename()if fpath!="":_ ,fname,tp1=get_filePath_fileName_fileExt(fpath)form = tp1[1:]print(form)#打印文件类型open_file = open(fpath, "rb")b64str = base64.b64encode(open_file.read())open_file.close()sendfile = 'filecode@%s@%s = "%s"'%(fname,form,b64str)sendfile = sendfile.replace("b'","").replace("'","")f = open("file.txt", "w+")f.write(sendfile)f.close()return sendfiledef btn_delete(filepath,detime=1):#待删除的文件路径,延时删除秒数if filepath!="":sleep(detime)remove(filepath)if __name__ == '__main__':file_code = btn_selectfile()print(file_code)a = btn_savefiles(file_code)btn_delete(a,5)

python3无损资源储存,py文件内可以带任何资源相关推荐

  1. Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略

    Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略 目录

  2. 怎么把写好的python代码打包成exe-详解如何将python3.6软件的py文件打包成exe程序...

    在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序.在浏览网上的资料来看,有利用pyinstaller和cx_Freeze进行 ...

  3. python3.6打包成exe文件_详解如何将python3.6软件的py文件打包成exe程序

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. python3.6.6卸载_Python3.6安装卸载、执行命令、执行py文件的方法详解

    Python3.6安装卸载.执行命令.执行py文件的方法详解 开发一个功能,C/C++可能要500行代码,Java可能需要200行代码,然而Python可能需要50行代码,虽然代码少,可能开发的飞起, ...

  5. pythoninstaller打包多个py 文件_Pyinstaller通过spec文件打包py程序(多个py脚本)

    Pyinstaller pyinstaller是python的一个第三方模块,使用它可以将python程序打包为可执行文件,实现打包后的程序在没有python环境的机器上也可以运行.pyinstall ...

  6. python函数文档说明调用方式_Python 跨.py文件调用自定义函数说明

    0 前言 os.chdir() :用于改变当前python工作的目录到指定的路径 sys.path:是python搜索模块的一个路径集,为list,自定义的包可以把存放路径加进去,之后直接调用包名就行 ...

  7. Python如何导入自己编写的py文件

    一. 想要实现的效果 新建文件夹将自编模块集中管理 可在其它py文件内import 自编模块,像import第三方库一样 二. 实现的方法 步骤1:将编号的模块 *.py放入文件夹,在我计算机中是:F ...

  8. python—auto-py-to-exe—.py文件打包成.exe文件最全最详细(用不同的类别做教程)

    目录 1.打包工具介绍 安装库 2.打包方法 3.例程 (1)只打包py文件,不含有其他资源文件 使用: (2)打包py文件和资源文件(包括文件夹) 1.打包工具介绍 对于打包工具有很多,比如:pyi ...

  9. python一个函数调用另一个函数_python下如何在目录下让Python文件去调用另一个文件内的函数或类...

    欢迎各位小哥哥小姐姐阅读本<小生>的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!! 您的点赞和关注将是我持续更新的动力呢.^v^ 有不懂的问题可以私聊我哦! 分析 针对这个问题 ...

最新文章

  1. Ril分析五——ril学习总结
  2. 能源结构进入变革时代 光伏业趋于壮大转型
  3. mysql写入监控_zabbix监控mysql操作
  4. linux联想电脑wifi密码,联想笔记本Y7000—ubuntu16.4无法开启wifi的解决办法
  5. 开源 免费 java CMS - FreeCMS1.3-数据对象-report
  6. python 从地址获取数据失败怎么解决_python面试题大全
  7. VB 删除数组中的重复元素
  8. altium designer快捷键大全
  9. 基于python爬虫的论文标题_Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】...
  10. php操作mysql数据库的扩展有哪些_PHP使用PDO扩展操作mysql数据库
  11. 【WePY小程序框架实战四】-使用asyncawait异步请求数据
  12. 计算机专业知识比喻,很好的计算机基础知识比喻
  13. MongoDB实战系列之三:MongoDB的主从部署
  14. Rust : 如何use本地化crate与 dependencies 和 path
  15. 阿里云网盘来了,来搭建自己“免费“私人网盘
  16. SSM+流浪动物救助系统 毕业设计-附源码191631
  17. 17 Redis 的性能受CPU结构影响
  18. CentOS7-samba文件共享服务
  19. python无法初始化设备_【无法初始化这个硬件设备驱动程序】无法初始化这个硬件的设备驱动_无法初始化d3d...
  20. vscode EIDE 使用手册

热门文章

  1. 电子科技大学清水河校区不看会后悔的绝美秋季风景高清大图:如果你喜欢山水画,你一定会喜欢这里,因为这里就是山水画。
  2. 44、基于51单片机数字电压表设计电流电压功率表
  3. 7-3 读者写者饿死问题
  4. 电信ADSL+路由器自动拨号设置详细步骤
  5. java调用摄像头保存到图库_Java调用摄像头并拍摄保存
  6. LeetCode 中级 - 字谜分组
  7. redis性能监控(一): Redis Info 命令 - 获取 Redis 服务器的各种信息和统计数值
  8. 一篇文章看懂函数式编程与命令式编程
  9. 移动护理、护士工作站 UI界面及业务
  10. 用python在网页上爬【微博】用户发的微博(json解析)