-
2019-07-08 17:47:41
后缀为tar.gz的文件实际上时先将文件(单个或多个)打包成后缀为tar的(tar包)文件,再用gzip压缩成gz文件,如此来说我们便可以用两步来实现此功能,请看代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
import org.apache.commons.compress.utils.IOUtils;/**
* @Title: GZIPUtil.java
* @Description: gzip文件压缩和解压缩工具类
* @author LM
* @date 2009-11-4 下午06:23:29
* @version V1.0
*/
public class GZIPUtil {
/**
*
* @Title: pack
* @Description: 将一组文件打成tar包
* @param sources 要打包的原文件数组
* @param target 打包后的文件
* @return File 返回打包后的文件
* @throws
*/
public static File pack(File[] sources, File target){
FileOutputStream out = null;
try {
out = new FileOutputStream(target);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
TarArchiveOutputStream os = new TarArchiveOutputStream(out);
for (File file : sources) {
try {
os.putArchiveEntry(new TarArchiveEntry(file));
IOUtils.copy(new FileInputStream(file), os);
os.closeArchiveEntry();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
if(os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return target;
}/**
*
* @Title: compress
* @Description: 将文件用gzip压缩
* @param source 需要压缩的文件
* @return File 返回压缩后的文件
* @throws
*/
public static File compress(File source) {
File target = new File(source.getName() + ".gz");
FileInputStream in = null;
GZIPOutputStream out = null;
try {
in = new FileInputStream(source);
out = new GZIPOutputStream(new FileOutputStream(target));
byte[] array = new byte[1024];
int number = -1;
while((number = in.read(array, 0, array.length)) != -1) {
out.write(array, 0, number);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
if(in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
if(out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
return target;
}public static void main(String[] args) {
File[] sources = new File[] {new File("task.xml"), new File("app.properties")};
File target = new File("release_package.tar");
compress(pack(sources, target));
}
}更多相关内容 -
【Python打包成exe】快速将多个py文件及其他文件打包为exe可执行文件
2022-03-17 22:51:43尝试了很多种Python打包为exe可执行文件的方式,通过总结,得出一种最简洁、最有效的打包方式分享给大家!使用概述:
尝试了很多种Python打包为exe可执行文件的方式,通过总结,得出一种最简洁、最有效的打包方式分享给大家!
步骤一(准备好安装文件):
准备好将要打包的工程文件(夹)
如上图所示,首先将主文件UI.py和文件夹./file放在一级文件夹./YW下方,如果有同级其他.py文件与UI.py放在同一级文件夹即可!然后将其他类型的文件统一放入file文件夹当中(例如txt\jpg\csv\png\ico等其他类型文件)
步骤二(下载安装Pyinstaller):
先进入控制台,通过cd指令进入到项目当前文件夹
然后输入镜像下载:pip install Pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
下载安装后即可!
步骤三(生成.spec文件):
.spec文件为安装配置文件,作用是对可执行文件进行配置!
在Pycharm编译器Terminal窗口当前项目路径中输入如下指令:
pyi-makespec UI.py
随后即可在项目文件夹中生成UI.spec文件!
步骤四(配置.spec文件):
用记事本打开UI.spec文件:
1、如果还有其他.py文件则在Analysis后面添加,例如我这里添加了个同级文件’tmp.py’
2、在pathex后手动输入文件工程的绝对路径
3、在datas后添加其他文件夹’file’,注意括号和文件夹名称(这个是设置其他数据的存储路径)
4、将consolo = True设置为consolo = False,目的是为了消除封装好exe执行时出现控制台黑框!
步骤五(配置完成进行封装):
在Pycharm编译器Terminal窗口当前项目路径中输入如下指令:
pyinstaller -D -w UI.spec
封装完成:
封装结果:
出现三个文件夹:
点击进入dist:
找到可执行文件
点击运行:
成功运行! -
python3_将多个.py文件打包成exe程序并添加图标
2021-04-13 11:42:11一、安装pyinstaller 打开DOS窗口输入以下命令: pip install pyinstaller 二、打包 1、准备打包的文件 打包的项目为Tkinter目录下的所有python文件,其中test.py为主文件 ...spec文件中主要包含4个clas前言
我们开发的脚本一般都会用到第三方包,当别人需要用到我们脚本的时候,如果我们直接把xxx.py文件发给她,她是没有办法直接使用的,她还需要安装python解释器和安装我们使用的第三方包,这个时候对于她来说就很麻烦,那我们应该怎么让她不需要搭建环境了?这个时候我们就可以用到pyinstaller模块了,我们直接打一个exe包,发给她使用,这个时候她不需要任何环境,直接双击运行即可。
一、安装pyinstaller
打开DOS窗口输入以下命令:
pip install pyinstaller
二、打包教程
以下会介绍两种打包方式。第一种是把所有.py文件打包成单个exe程序,第二种是把所有.py文件打包成一个目录文件夹,包含exe程序和一些依赖文件(项目工程很大时,建议使用这个)。
1、单个可执行exe文件
- 同一个文件夹下
(1)打包的项目为Tkinter目录下的所有.py文件,其中test.py为主文件。
(2)在Tkinter目录下新建一个package.spec文件。
(3)并在文件中写入以下内容,根据自己的项目进行相应的修改。# -*- mode: python ; coding: utf-8 -*- block_cipher = None # 所有需要打包的.py文件, test.py为执行文件 file = [ 'test.py', 'test1.py', 'test2.py' ] a = Analysis(file, pathex=['C:\\Users\\Admin\\Desktop\\Tkinter'], # 此列表为项目绝对路径 binaries=[], datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='test', # 程序exe的名称 debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True #此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,如不需要执行窗口,改成False即可 )
(4)通过pyinstaller打包spec文件
pyinstaller package.spec
打包成功后,会显示以下信息,C:\Users\Admin\Desktop\Tkinter\dist\test.exe为打包后exe执行文件路径
- 不同文件夹下
# -*- mode: python ; coding: utf-8 -*- block_cipher = None # 所有需要打包的.py文件, test.py为执行文件 file = [ 'test.py', './folder1/test1.py', './folder2/test2.py' ] a = Analysis(file, pathex=['C:\\Users\\Admin\\Desktop\\Tkinter'], # 此列表为项目绝对路径 binaries=[], datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='test', # 程序exe的名称 debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, #此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,如不需要执行窗口,改成False即可 icon='C:\\Users\\Admin\\Desktop\\Tkinter\\1.ico') #程序图标,要绝对路径
2、打包为目录(包含exe和一些依赖文件)
(1)生成主函数对应的spec文件,命令
在Tkinter路径下使用:pyi-makespec test.py
执行命令后,Tkinter目录下会生成test.spec文件
(2)修改spec文件,加入需要打包的所有python文件- spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT:
- Analysis:以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息
- PYZ:是一个.pyz的压缩包,包含程序运行需要的所有依赖
- EXE:根据上面两项生成
- COLLECT:生成其他部分的输出文件夹,COLLECT也可以没有。
test.spec文件# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis(['test.py','test1.py','test2.py','test3.py'], #所有要打包的.py文件 pathex=['C:\\Users\\Admin\\Desktop\\Tkinter'], #此列表为项目绝对路径 binaries=[], datas=[('1.png','img')], # 此处可以添加静态资源,例如你有个图片文件夹img,可以这样写[('1.png','img')],1.png图片要有路径,我这里是放在代码同个目录下的,打包以后会有一个img文件夹 #[('1.png','img'),('test.txt','.')],生成多个文件夹,点表示当前文件夹。 hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, [], exclude_binaries=True, name='test88', #程序exe的名称 debug=False, bootloader_ignore_signals=False, strip=False, upx=True, # 打包的时候进行压缩,False表示不压缩 console=True, #此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行,如不需要执行窗口,改成False即可。 icon='C:\\Users\\Admin\\Desktop\\Tkinter\\1.ico') #程序图标,要绝对路径 coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name='test') #程序文件夹名称
(3)通过pyinstaller打包spec文件
pyinstaller test.spec
此时项目下多了两个目录,进入dist目录,找到dist路径下后缀名为exe的文件。这里为dist下目录test下的test88.exe
注:如果要在其他电脑运行程序,需要把test整个文件夹拷贝过去。 - 同一个文件夹下
-
windows下使用pyinstaller将多个目录的Python文件打包成exe可执行文件
2020-04-06 11:32:01需要将一个工程涉及两个目录的模块文件打包成exe,打包环境如下: 1、windows7; 2、Python 3.7.2; 3、PyInstaller 3.6 。 二、操作步骤 2.1、使用清华镜像下载并安装pyinstaller, pip install ...一、引言
需要将一个工程涉及两个目录的模块文件打包成exe,打包环境如下:
1、windows7;
2、Python 3.7.2;
3、PyInstaller 3.6 。二、操作步骤
2.1、使用清华镜像下载并安装pyinstaller,
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
2.2、安装成功后进入DOS命令行
进入模块classA所在目录:
F:\学习\python\project\classA
也可以在PyCharm的terminal方式下操作,但个人觉得反而不如DOS方式方便。2.3、一个工程两个目录的情况
两个目录的模块文件非常简单,就是分别定义了classA和classB的构造方法和析构方法,在模块classA中使用了另一个目录下的模块classB。具体工程情况如下:
由于没有查到多目录打包相关的文档,尝试用多种方式执行打包命令:pyinstaller classA.py classB.py -p F:\学习\python\project\classA;F:\学习\python\project\classB
报错:ValueError: script ‘F:\学习\python\project\classA\classB.py’ not found,可以看到classB.py目录找错了pyinstaller classA.py classB.py -p F:\学习\python\project\classA; -p F:\学习\python\project\classB
,报相同的错误pyinstaller classA.py F:\学习\python\project\classB\classB.py
打包成功,打包文件在classA所在目录下的dist,即F:\学习\python\project\classA\dist\classA下,执行文件为classA.exe,拷贝F:\学习\python\project\classA\dist\classA整个目录到其他未安装Python的机器上能正常执行pyinstaller classA.py -p F:\学习\python\project\classB
打包成功,但在代码中执行import classB.classB
时报错:ModuleNotFoundError: No module named 'classB'
,但如在import classB.classB
前加入如下代码:
import sys sys.path.append("F:\学习\python\project")
可以正常打包和执行。
5.pyinstaller classA.py -p F:\学习\python\project
打包成功,执行成功。三、 结论
在执行两个目录的py文件打包时,只需要在其中一个目录下运行,打包时:
- 包含主程序的py文件必须是命令行中输入py文件列表的第一个文件(假设为xxx.py)
- 在没有其他参数设置的情况下,输出目录缺省在执行打包所在的目录的dist\xxx子目录下
- 与主程序相关的其他py模块文件,包括其他目录的py文件,可以在打包时有多种处理方式,但无论哪种方式,都是告知打包程序其他文件所在的路径
- 第一种方式就是在命令行第一个py文件后,将所有py文件都列出,但不在当前目录的文件要带文件路径;
- 第二种方式,所有主程序import的模块(或在import模块中再import的模块,依次类推),都无需将对应py文件在打包命令行中列出,打包程序会根据import关系自动打包,但必须确保相关文件所在目录必须在打包程序搜索路径上,这个路径可以是Python的使用的环境变量、可以是打包命令的-p或–paths参数指定路径(可以每个目录带一个-p或–paths 前导选项)、也可以是一个前导带多个目录,每个目录用分号分隔,也可以是py文件中sys.path.append的路径。
可能还有更多的其他方式,但有这几种足够使用了。但注意 如果对应py文件不能通过第二种import方式加载,则打包时只能采用第一种方式。
如果涉及多个目录,与两个目录的情况类似。
老猿Python,跟老猿学Python!
-
三步教你如何将python文件打包成exe可执行文件
2020-04-12 22:20:17python 打包成exe 主要有两种,一种是py2exe,另一种便是pyInstaller,之前我是用py2exe的,但是我后来发现py2exe存在问题:1,打包好的 exe只能在相同的系统下运行,比如你在XP系统用py2exe打包好的exe只能在XP上... -
python打包exe文件库
2018-05-26 21:34:02当需要把自己写的程序移植到没有安装python的计算机时,需要将自身程序打包。 -
将winform应用程序打包成exe文件
2013-08-01 16:57:26将写好的winform应用程序打包成一个.EXE结尾的可执行文件,可以安装到自己的电脑上面,有图和文字说明 -
用idea将一个java文件打包成可执行jar包并能正确运行
2018-11-02 11:22:482,怎么看这个jar包是否可执行或者运行正确? 第一种:可以向百度经验最后的执行步骤:进入生成的jar包位置 然后在地址栏中输入cmd,即在当前目录下运行cmd,输入命令:java(空格)-jar(空格)这个jar包... -
Java 将多个文件打包为zip压缩包并提供给前端下载
2020-08-06 16:58:53一、文件打包为zip public void zip(List<File> fileList,String zipFileName) { FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; ZipOutputStream ... -
如何使用Pycharm将多个py文件打包成一个可运行并且可安装的exe文件
2019-12-12 14:32:16使用Pycharm将多个py文件打包成一个可运行并且可安装文件第一步:安装pyinstaller第二步:打包生成exe文件第三步:造成一个类似安装程序的东西 第一步:安装pyinstaller 先打开命令行,打开pycharm在左下角: 打包... -
linux命令五十七之tar命令;linux多个文件压缩打包到一个压缩文件
2020-12-04 16:00:10可以用来压缩打包单文件、多个文件、单个目录、多个目录。 Linux打包命令_tar tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。 常用格式: 单个文件压缩打包 tar czvf my.tar.gz file1 多个文件压缩... -
将多个class文件打包为jar包
2018-07-31 10:10:20第三行为主类入口,即main函数所在文件,sendMsg为包名称。 MANIFEST.MF文件是为了在执行jar包时,可以快速定位到主程序入口。 4. 打包jar文件 jar -cfm jar包名称 主类清单文件 要打包的class文件 即 ... -
linux的tar命令详情;linux多个文件压缩打包到一个压缩文件
2020-06-21 20:13:11可以用来压缩打包单文件、多个文件、单个目录、多个目录。 Linux打包命令_tar tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。 常用格式: 单个文件压缩打包 tar czvf my.tar.gz file1 多个... -
如何把多个py文件打包成一个在pycharm直接运行
2020-11-26 12:36:51把多个py文件打包成一个可以直接在pycharm直接运行的文件 如果是想同时打包多个py文件在pycharm中,通常做法是将它转化为exe文件。因此,首先,我们需要安装 pyinstaller。 第一步,安装pyinstaller 您可以在下面这... -
PyInstaller:Python文件打包(或生成.exe文件)之第三方库
2021-03-06 05:23:32PyInstaller是一个十分有用的第三方库,它能够在Windows、Linux、MacOSX等操作系统下将Python源文件打包(或生成.exe文件),通过对源文件打包,Python程序可以在没有安装Python的环境中运行,也可以作为一个独立文件... -
使用pyinstaller打包多个和单个python文件
2021-10-03 20:06:001、将需要打包的项目为anjuke_sd目录下的所有python文件,其中excute_main.py为主文件。 2、生成主函数对应的spec文件 命令:在anjuke_sd路径下使用:pyi-makespec excute_main.py 如下图已经生成excute_main.spec... -
将python文件打包成exe可执行文件过程中遇到的问题及解决办法
2019-10-08 16:48:06三、安装好环境就可以打包exe文件了 命令行进入要打包文件的根目录下输入:pyinstaller -i tb.ico -F add_car.py(tb.ico图标文件,注意必须是ico结尾文件。 add_car.py要打包的python文件)提示successfully表示... -
如何将一个python文件打包成一个可执行的小程序
2021-05-20 17:13:28如何将一个Python文件打包成一个可执行的小程序 一、安装pyinstaller pyinstaller: 一个用来打包python的py文件的库,通过他可以将.py文件打包成可执行的.exe文件 (1)打开控制台,快捷键WIN+R,输入CMD,回车 ... -
Enigma 将Qt多个库文件打包生成一个exe文件
2018-05-15 14:42:50使用虚拟文件打包系统,您可以加入任何类型的文件,如动态库(.dll)、ActiveX/COM对象(.dll , .ocx),视频和音频文件(.avi,.mp3 ),文本文件(.txt, *.doc )等, Enigma虚拟文件打包系统不会将打包的文件释放... -
使用pyinstaller打包多个python文件
2020-06-18 21:39:23这次需要打包的项目为Tkinter目录下的test3目录下的所有python文件,其中main.py为主文件。 二.打包流程 1.生成主函数对应的spec文件 命令:在test3路径下使用:pyi-makespec main.py 如下图已经生成main.... -
将python项目打包成exe可执行文件(多个文件和素材)
2020-03-03 17:07:30将单个文件打包 1.安装Pyinstaller模块 2.在Pycharm中的Terminal输入命令:“pyinstaller -F -w XXX.py” 就可以制作出exe。 在cmd中:先cd到项目目录下再输入命令。例如:pyinstaller -F -w -i g:\2345Downloads\... -
linux文件怎么打包、压缩和解压?详细教程来了!
2021-05-10 20:59:44在使用linux系统时,一些新手会遇到linux文件打包、压缩和解压的问题,具体该怎么解决呢?接下来为你提供详细教程,具体如下。Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个... -
将python文件打包成exe可运行文件
2017-12-24 18:16:19目前有好几种方法可以将python文件打包成exe应用程序文件,例如py2exe,pyinstaller等,比较下来,还是觉得pyinstaller使用起来比较简单。 首先第一步下载安装pyinstaller, 如果已经安装过python3的用户比较方便... -
将python文件打包exe程序只需要三步,超简单快捷
2019-04-19 11:27:33第一步安装pyinstaller库:pip...第三步,输入pyinstaller -F .py就好了,.py就是要打包的文件。 出现completed successfully就成功了。 生成的exe文件在dist里,这个exe文件单独拿出来放在任何的位置都可以运行。 ... -
cygwin中将一系列.o文件打包成.a文件
2018-05-24 16:08:57在cygwin或者linux中,可以通过以下命令,将一系列.o文件打包成.a文件。 ar crv libtest.a *.o 或者也可以用如下命令。 ar rc libtest.a *.o 运行结果如下图所示: 由上图结果可知,通过如上命令,... -
Python:pyinstaller如何将一个项目的.py和相关资源文件打包生成.exe文件
2020-03-25 17:07:18解决思路是:.exe在执行时会生成一个临时文件夹,而我们需要做的就是把我们的资源文件放入临时文件夹,让程序访问。 目录前言1.打包.exe文件方法简介2.二级目录三级目录 1.打包.exe文件方法简介 Python打包.exe的... -
python 将资源文件打包进exe
2020-09-09 16:34:12文章目录1、修改代码中资源路径2、修改生成的 *.spec 文件3、使用 spec 文件再次打包 exe 1、修改代码中资源路径 在执行exe时资源文件会被解压到C:\Users\xxx\AppData\Local\Temp_MEI33282这样的一个名称随机的... -
maven 打包排除配置文件
2020-12-20 06:30:10如果你想通过pom.xml文件的配置实现的话,你可以这样1、打jar包时过滤配置文件src/main/resources**/*true..............2、在plugins中添加插件org.apache.maven.pluginsmaven-resources-plugincopy-... -
【zipfile】Python实现将文件打包为zip压缩包 & 解压
2020-06-13 21:37:10用Python将文件进行压缩,可以使用 zipfile库,提供了非常丰富的API。 zipfile本身是上下文管理器, 可以使用with。... """ 将多个文件夹中文件压缩存储为zip :param zip_file_name: /root/Document/test.zip :para