代码如下: 保存为py2pyc.py,将要打包的文件夹拖拽至此脚本,即可打包。import os
import sys
import tarfile
import shutil
import compileall
from pathlib import Path
#drag file into this
keyword = '.cpython-37'
app = sys.argv[1]
temp = 'publish_'+Path(app).name
def rm_files(_dir, suffix):
for prefix, dirs, files in os.walk(_dir):
for f in files:
if f.endswith(suffix):
filename = os.path.join(prefix, f)
os.remove(filename)
for d in dirs:
if d == '__pycache__':
shutil.rmtree(os.path.join(prefix, d))
def move(_dir, k):
os.chdir(_dir)
lt = os.listdir(_dir)
for f in lt:
if not os.path.isdir(f):
if k in f:
tmp = f.replace(k, '')
os.renames(f, tmp)
shutil.move(os.path.join(os.path.abspath('.'), tmp), os.path.join(os.path.abspath('..'), tmp))
else:
move(_dir + '\\' + f, k)
os.chdir('..')
def pack(output_filename, source_dir):
os.chdir(source_dir)
with tarfile.open(output_filename, "w:gz") as tar:
for name in os.listdir('.'):
tar.add(name)
tar.close()
f = Path(output_filename).resolve()
upper = Path.cwd().parent.joinpath(output_filename)
f.replace(upper)
if __name__ == '__main__':
rm_files(os.getcwd(), '.pyc')
if os.path.isdir(temp):
shutil.rmtree(temp)
shutil.copytree(app, temp, ignore=shutil.ignore_patterns('test', '.idea', 'log'))
compileall.compile_dir(temp)
move(os.getcwd(), keyword)
rm_files(temp, '.py')
pack(temp+'.tar.gz', temp)
print("done!")
支付宝扫码打赏
微信打赏