Python day14
模块,输入输出流
模块
系统模块:—》直接使用
自定义模块:一个py文件就是一个模块
系统模块:—》直接使用
自定义模块:一个py文件就是一个模块
哪些’工具’可以在模块中定义?1变量。2函数。3类
模块的定义是可以被其他的模块所使用
导入模块:(基于当前项目的位置)
- import 模块名
访问里面的内容:模块名.内容
2.from 模块名 import 想用的内容
3.from 模块名 import * 导入模块中所有的内容
本模块获取自己 名字:name,打印出来是__main__
其他模块导入获取模块的名字:name:模块自身的名字
两种导入方式,导入模块时会自动加载,会调用模块中没有放在if __name__=='__main__'中的函数或打印之类的功能
#在本模块中:
if __name__=='__main__':
print('')
#这样其他模块导入时不会自动调用,只能在自己的模块中使用
包
包:文件夹+_-init__.py
包里面存放的是多个模块
包的作用:1.组织模块 2.避免模块名的命名冲突
import 包名.模块名
from 包名.模块名 import 具体内容
from 包名.模块名 import :本身是调用模块内所有内容__all__是限制,在__all__=[列表]中,让只能调用到其中的内容,不在列表中的调用不到
同包中py文件之间的引用----->from 包名.模块名 import 具体内容
不同包中py文件之间的引用---->from 包名.模块名 import 具体内容
在模块中可以通过__all__=[可以通过*好访问的内容]
init.py
init.py文件也可以定义一些函数,变量,类
也是一个模块,理解成一个‘魔术模块 ’,只要导入包就会执行此模块
from 包名 import *,**如果__init__中没定义任何东西,无法使用包里的模块,没有任何意义,***代表__init__.py文件中的内容,若是__init__.py文件中有__all__=[外界可以访问的内容,或者是包里的模块],或者定义了一些内容,则可以使用模块
输入输出
读:read
写:write
open(file,mode,encoding=’’)----->流
with open(file,‘w’,encoding=‘utd-8’) as 流
流.write()
图片复制
file_path=r'C:\Users\Xuchuanqi\Desktop\sb.jpg'#路径
with open(file_path,'rb') as rstream: #读二进制
content=rstream.read()
file_name=file_path[file_path.rfind('\\')+1:]#用切片获取图片名字
with open(file_name,'wb') as wstream: #写二进制
wstream.write(content)