运行Python脚本时生成的__pycache__文件夹

原文:https://blog.csdn.net/index20001/article/details/73501375

用python编写好一个工程,在第一次运行后,总会发现工程根目录下生成了一个__pycache__文件夹,里面是和py文件同名的各种 *.pyc 或者 *.pyo 文件。

先大概了解一下python基本运行机制。Python程序运行时不需要编译成二进制代码,而直接从源码运行程序,简单来说是,Python解释器将源码转换为字节码,然后再由解释器来执行这些字节码。

解释器的具体工作:

1 完成模块的加载和链接;

2 将源代码编译为PyCodeObject对象(即字节码),写入内存中,供CPU读取;

3 从内存中读取并执行,结束后将PyCodeObject写回硬盘当中,也就是复制到.pyc或.pyo文件中,以保存当前目录下所有脚本的字节码文件;

* 之后若再次执行该脚本,它先检查【本地是否有上述字节码文件】和【该字节码文件的修改时间是否与其脚本一致】。是就直接执行,否则重复上述步骤。

以下参考自stackoverflow上的一个回答。

· 为什么会出现__pycache__文件夹?

python解释器会将 *.py 脚本文件进行编译,并将编译结果保存到__pycache__目录中。

下次再执行工程时,若解释器发现这个 *.py 脚本没有修改过,就会跳过编译这一步,直接运行以前生成的保存在 __pycache__文件夹里的 *.pyc 文件。

这样工程较大时就可以大大缩短项目运行前的准备时间;如果你只需执行一个小工程,没关系 忽略这个文件夹就行。

· 什么时候会出现__pycache__文件夹?

工程目录下有__main__.py文件,和其他将要调用的模块时。如果只有当前运行的脚本 "__main__",则不会生成 __pycache__ 的文件。

· 如何使__pycache__文件夹不出现?

单次: 运行脚本时添加 -B 参数

python -B foo.py

永久: 设置环境变量 PYTHONDONTWRITEBYTECODE=1

附:该文件夹出现在Python3.2及其后的版本中,Python2下的编译文件和源文件放同目录。

Python的__pycache__文件夹相关推荐

  1. 为什么会出现__pycache__文件夹?

    为什么会出现__pycache__文件夹? python解释器会将 *.py 脚本文件进行编译,并将编译结果保存到__pycache__目录中. 下次再执行工程时,若解释器发现这个 *.py 脚本没有 ...

  2. Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器

    Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...

  3. python读取一个文件夹/子文件夹下的所有文件名字

    python读取一个文件夹/子文件夹下的所有文件名字 示例代码: import osfile_path = './images/' all_file_name = os.listdir(file_pa ...

  4. Python递归获取文件夹下面所有文件名字:

    Python递归获取文件夹下面所有文件名字: def getAllFiles(targetDir):files = []listFiles = os.listdir(targetDir)for i i ...

  5. python 打开当前目录的txt文件-Python - 读取其他文件夹/目录中的文本文件

    这是我的情况:我有一些.txt文件在我可以运行脚本的不同目录中.Python - 读取其他文件夹/目录中的文本文件 mainDir/ -face/ -57268-face-_tracker.txt - ...

  6. python下载文件到指定目录-Python获取指定文件夹下的文件名的方法

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, t ...

  7. python怎么读文件夹下的文件夹-python如何获取当前文件夹下所有文件名详解

    前言 本文主要给大家介绍了关于python获取当前文件夹下所有文件名的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 os 模块下有两个函数: os.walk() os.li ...

  8. python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...

    python 统计指定文件夹下所有的文件数量 本来一直是有这个需求,只是以前写的是递归的方式处理,感觉对资源的占用不友好,而且python的最大递归深度不超过1000,所以改了一下,这里用广度优先遍历 ...

  9. python删除指定文件夹下文件和文件夹的方法

    python删除指定文件夹下的文件,是一个常用的功能.我找了不少地方,一直没有找到合适的模版,那只好自己倒腾一个比较实用的模版了. 基本模块 这里面会用到几个模块,一个是目录下所有文件的的函数:lis ...

最新文章

  1. LeetCode 36 Valid Sudoku(有效数独)(*)
  2. 如何在TensorFlow中用深度学习修复图像
  3. 写给程序员的最好的13条建议
  4. python列表片段_Python列表片段索引操作,python
  5. 设计模式的Java 8 Lambda表达式-策略设计模式
  6. deMeer5_Attacker
  7. c++编码风格指南_100%正确编码样式指南
  8. mysql安装后变10g_Oracle 10G安装中一些常见问题解决
  9. Linux shell(4)
  10. 利用并查集判断一个无向图是否成树
  11. 渗透测试工具Nmap从初级到高级
  12. 假货泛滥是淘宝的毒瘤
  13. java file.length 单位_Java File length()方法
  14. 【MIME协议】base64编码与quoted-printable编码
  15. 服务器双路供电原理,双路电源上电顺序控制电路原理图
  16. 2019/7/18ACM集训
  17. Java 7~14各个版本新特性详解
  18. 小红书文案怎么编辑制作?小红书上的文案怎么做的?
  19. Kony集成百度推送-IOS
  20. C51单片机温湿度传感器DTH11使用

热门文章

  1. 稳定wow60级服务器,魔兽怀旧服:永久60级怀旧服是什么体验?
  2. android xml pid vid,增加属性标识摄像头的vid与pid,以便知道摄像头与设备文件的对应关系...
  3. swoole php配置文件,easyswoole自义命令加载自定义配置文件
  4. java之父求职_Java求职实战之继承和多态
  5. mongodb安装_MongoDB事实:商品硬件上每秒插入80000次以上
  6. 去掉一个linux的ip,linux – iptables删除除一个IP之外的所有传入ICMP请求
  7. ebs oracle pl sql开发_PL/SQL设置
  8. 水文特点是什么意思_一级建造师是什么意思?一级建造师报考指南
  9. java moment 日期转换_关于日期:如何使用Java 8 DateTime API转换修改后的儒略日数字...
  10. 在Java 17中偏向锁可算是废了