当前位置: 首页 > news >正文

Python篇之编译py文件为pyc文件的方法总结

一、前言
一般来说,当我们在发布系统的时候,希望上线的代码是安全可靠的,不希望别人能看到源代码,通常都会先提前编译好,然后进行发布,在python中,编译好的代码格式为 .pyc 文件

常见的python代码形式有如下几种:
.py  --python的源代码文件,程序内容可以用文本编辑器直接打开,代码可视

.pyc  – .py文件经过编译后产生的字节码文件,是二进制文件

.pyo  – .py文件经过优化后的执行文件

.pyd  – python的动态链接库文件

二、编译python代码为pyc文件的所应用的模块
1、python内置的py_compile模块可以把py文件编译为pyc文件或pyo文件;
方式一:py脚本形式:

# -*- coding: utf-8 -*-
#python 27
#python之模块py_compile用法(将py文件转换为pyc文件);二进制文件,是由py文件经过编译后,生成的文件.
 
#办法一:
import py_compile
#加r前缀进行转义
py_compile.compile(r'D:\test.py')#py文件完整的路径.
 

方式二:命令行形式:

python -m py_compile xxx.py
# 注: 其中-m参数 就相当于py脚本中的import
# 这里的 -m py_compile 相当于上面的 import py_compile

2、内置的compileall模块可以把整个目录中的py文件编译为pyc或pyo文件;
方式一:py脚本形式:
2.1、 仅编译目录:


import compileall

compileall.compile_dir('s1')

2.2、过滤文件,过滤掉不需要当前目录下不需要编译的文件,可利用正则表达式实现

import compileall
import re

compileall.compile_dir('s1',rx=re.compile(r'/\.txt'))

2.3、如果需要递归遍历目录,则需要添加参数。maxlevels
当maxlevels = 0,不需要递归。
当maxlevels = 1,需要递归。

import compileall
import re

compileall.compile_dir('s1', maxlevels=0, rx=re.compile(r'/\.txt'))

2.4、仅选择需要编译的路径

import compileall
import sys

sys.path[:] = ['s1', 's2']
print 'sys.path =', sys.path
compileall.compile_path()

方式二:命令行模式

python -m compileall /dir/  # 生成目录下所有py文件对应的pyc文件

相关文章:

  • Windows学习总结(25)—— Windows 11 cmd 命令大全
  • 识破贷后资金归集——关联网络
  • 关于sysdiag的利用
  • 【推送位置苹果群发iMessage推】如果Windows和Linux实现不同的传输层协议,那末因为数据格式的不同
  • 12.6、后渗透测试--Windows系统下信息收集模块
  • 含参PDE(偏微分方程)的神经网络并行编程mpi4py
  • C/C++程序的断点调试 - Visual Studio Code
  • 墨家在中国为什么消失得这么彻底?
  • 面试必备:分库分表经典15连问
  • 微信支付-全面详解(学习总结---从入门到深化)
  • 【MySQL】数据库基础知识汇总和增删改查操作
  • 【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)
  • 股票l2接口的委托数据有什么作用?
  • 人工智能:智能语音技术应用场景介绍
  • JSP ssh流量充值系统myeclipse开发oracle数据库MVC模式java编程计算机网页设计
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • css布局,左右固定中间自适应实现
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • log4j2输出到kafka
  • 工作手记之html2canvas使用概述
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 免费小说阅读小程序
  • 七牛云假注销小指南
  • 数组的操作
  • 一道闭包题引发的思考
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • # 计算机视觉入门
  • # 数据结构
  • $$$$GB2312-80区位编码表$$$$
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • %@ page import=%的用法
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四) Graphivz 颜色选择
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net FrameWork简介,数组,枚举
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • ?.的用法
  • @AliasFor注解
  • @Builder用法
  • @ConditionalOnProperty注解使用说明
  • [20150321]索引空块的问题.txt
  • [20181219]script使用小技巧.txt
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BZOJ 2142]礼物(扩展Lucas定理)