python 批量生成pyc文件

单个py文件转为pyc文件
在命令行中输入如下命令:
python -m py_compile hello.py

利用python编译工程, 生成pyc文件。pyc文件是一种二进制机器码,而且隐藏了源码且使得程序能 正常执行。

compileall.compile_dir(path, force=True)为path目录下的py文件产生pyc文件,force=True更新所有的pyc文件。使用compileall得到pyc文件后。

  1. 将__pycache__文件夹下的内容粘贴到和__pycache__文件同目录下。
  2. 将pyc文件名改为与py文件一样的名字。如:app.cpython-37.pyc–》app.pyc
  3. 删除py文件

import os, shutil
import compileall

def copy_to_up(path):
    for f in os.listdir(path):
        if f ==  __pycache__ :
            for f_main in os.listdir(os.path.join(path, f)):
                path_src = os.path.join(path, f)
                shutil.copy(os.path.join(path_src,f_main),path)

def rename_file(path):
    for f in os.listdir(path):
        if f.endswith( .pyc ):
            f_new = f.replace( .cpython-37 ,  )
            os.rename(os.path.join(path, f), os.path.join(path, f_new))

def copy_rename(f, path):
    # 如果是__pycache__ 文件夹 将其中的文件移至上一层
    if f ==  __pycache__ :
        copy_to_up(path)
    #当前层为.pyc文件重命名
        rename_file(path)
    for pyf in os.listdir(path):
        if pyf.endswith( .py ) and not os.path.isdir(os.path.join(path, pyf)):
            os.remove(os.path.join(path, pyf))
  
def py_to_pyc(path):
    for f in os.listdir(path):
        copy_rename(f, path)
        if f !=  env  and f!= .vscode  and os.path.isdir(os.path.join(path, f)):
            path_d = os.path.join(path, f)
            print(path_d)
            for f_d in os.listdir(path_d):  
                copy_rename(f_d, path_d)
                if os.path.isdir(os.path.join(path_d, f_d)):
                    path_d_d = os.path.join(path_d, f_d)
                    print(path_d_d)
                    for f_d_d in os.listdir(path_d_d):
                        copy_rename(f_d_d, path_d_d)

if __name__ ==  __main__ :
    path = r C:UsersAdministratorDesktopmine 
    compileall.compile_dir(path, force=True)
    py_to_pyc(path)

参考链接:

https://www.jb51.net/article/158164.htm
https://www.fujieace.com/python/pyc.html

© 版权声明

相关文章

2 条评论

  • 头像
    Nana_Airo 投稿者

    https://www.jianshu.com/p/fcc98a8900c5 优化后的脚本

    无记录
    回复
  • 头像
    买大鱼_ 读者

    ### 回复的这个编辑环境太差了,我写个简书,你到我简书文章下面看吧,

    无记录
    回复