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:\Users\Administrator\Desktop\mine'
    compileall.compile_dir(path, force=True)
    py_to_pyc(path)

参考链接:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容