关于python包,模块,.pyc文件和文件导入理解

参考文献

一、包

包是一个文件夹,用来存放模块和子包。

包里一般会有一个__init__.py的文件(也可以没有)。

包里会有一个__pycache__文件夹,存放.py文件经解释器解释后的中间字节码(二进制文件)。

二、模块

可以作为模块的文件有.py、.pyc、.pyo、.pyd、.so、.dll文件。

三、.pyc文件与.pyo文件

这两个文件都是二进制文件,由python解释器将.py文件转化成的二进制文件,目的是加快解释速度且可以隐藏源代码。

python解释器在解释.py文件时,会优先查看是否有对应的最新的.pyc文件,有的话则直接加载.pyc文件。在加载之前,会检查.pyc文件是不是最新的(判断对应.py文件的修改时间),如果不是最新的,则解释.py文件。

.pyc文件可以由python自带模块py_compile生成,且会自动生成一个__pycache__文件夹存放.pyc文件。

如果没有.py文件,只有对应的.pyc文件,也可以调用,因为.pyc文件可以当作模块使用。

.pyo文件是对.pyc文件的优化版本,作用一致。

四、__init__.py文件的作用

__init__.py作用是将包变成一个模块(像.py一样的模块使用)

假如有个包名称为:package

1.在该文件中添加__all__=[‘os‘,‘sys‘,‘base64‘]变量,变量内存放着需要使用的模块名称。这样通过from package import *时,就可以将__data__列表内的模块加载进来。

2.在该文件中添加import os,将需要导入的包导入进来,这样通过package.os就可以调用这个包了(必须加包名)。

五、如何将自己写的模块放入包导入路径中

import sys

sys.path.append(‘your path‘)

一般将包或者模块放置在启动文件的当前目录

原文地址:https://www.cnblogs.com/zhuluqing/p/8832205.html

时间: 2024-10-02 01:43:30

关于python包,模块,.pyc文件和文件导入理解的相关文章

Python 模块化 模块搜索顺序、重复导入、模块加载列表(五)

模块搜索顺序.重复导入.模块加载列表 0x00 模块搜索顺序: 举例: #test.py import sys for p in sys.path: print(p) 运行结果: C:\python //pycharm环境中的Add content roots to PYTHONPATH C:\python //脚本所在目录 C:\Users\ihoney\AppData\Local\Programs\Python\Python35\python35.zip //打包,java扎包,避免大量小文

Python shutil模块(目录和文件操作)

import shutil #导入shutil模块 copyfileobj方法 将类文件对象fsrc的内容复制到类文件对象fdst shutil.copyfileobj(fsrc, fdst[, length]) 我一般的用法: shutil.copyfileobj(open('file','r'),open('file','w')) 注:如果fsrc对象的当前文件位置不为0,那么将只复制从当前文件位置到文件末尾的内容 copyfile方法 将名为src的文件的内容复制到名为dst的文件中,并返

python difflib模块实现两个文件差异对比,并输出html格式。

difflib 模块包含一些用来计算和处理序列之间差异的工具.它对于比较文本尤其有用,其中包含的函数可以使用多种常用差异格式生成报告. 实现了三个类: SequenceMatcher 任意类型序列的比较 (可以比较字符串) Differ 对字符串进行比较 HtmlDiff 将比较结果输出为html格式 #!/usr/bin/env python # #-*- coding: utf-8 -*- import difflib import sys try:     textfile1=sys.ar

python codecs模块 ---处理数据写入文件时会有编码不统一的问题

我们用open方法打开文件有时候会有一些问题,因为open打开文件只能写入str类型,而不会管字符串是什么编码方式. 示例: >>> fr = open('test.txt','a') >>> line1 = "我爱祖国" >>> fr.write(line1) 有编码不统一的时候,此时写入open方式打开的文件就有问题了. >>> line2 = u'我爱祖国' >>> fr.write(lin

python logging模块写入中文,文件乱码的解决方法

一下文件执行将产生乱码,切.log文件显示问好,打不开 import logging def shop_logging(name): name = name+"登录成功!" logger = logging.getLogger() fh = logging.FileHandler("test.log") formatter = logging.Formatter("%(asctime)s - %(name)s-%(levelname)s %(message

python Paramiko模块远程推送文件

#!/usr/bin/python import paramiko def push_file(file):     f = open(file,'r')     running = 1     while running:         line = f.readline()         if line != '':             line = line.strip('\n')             list = line.split(' ')             ip 

Day5 模块及Python常用模块

模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Module). 注意: 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 简单地说,模块就是一个保存了Python代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码! 模块分为三种: 自定义模块 开源模块 内置模块 使用模块有什么

python os模块总结

python os模块主要是操作文件和目录的,常用的方法如下: #1.os.getcwd()获取当前文件所在目录 #2.os.makedirs('dirname1/dirname2') 创建目录,可生成多层递归目录 #3.os.removedirs('dirname1/dirname2') 删除目录,必须是空目录 #4.os.mkdir() 创建单目录 #5.os.rmdir() 删除空目录,若不存在报错 #6.os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐

python之模块py_compile用法(将py文件转换为pyc文件)

# -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件) #二进制文件,是由py文件经过编译后,生成的文件. ''' import py_compile #不带转义r py_compile.compile('D:\test.py') Traceback (most recent call last): File "<pyshell#1>", line 1, in &l