module:模块
    模块的物理形式:以.py结尾的文件
    模块说白了就是个别人写好的文件,我们可以把它调入到我们自己的代码中

    python的程序构成
    顶层文件:也是个模块,只调用别的模块(没有其他文件调用顶层文件)——项目中的调配工作(管理者)
    模块:模块和模块之间可以相互调用


    一个文件夹下,里面有init.py的文件,这个文件夹就叫做包
    包:形式上和文件夹十分类似,也是一种目录结构
    包:必须再 文件夹内创建:init.py—包含上述文件的文件夹,都叫做包
    包是和模块息息相关, 访问一个模块:包.模块 ex: import matplotlib.pylot
    另外一种访问模块:包名.子包名.模块名
    如果一个模块有自己的名字,那包就是这个名字的姓
    但这种调用,必须从头到尾写全了,所以可以用下面这种起别名的方法来简化调用

    import matplotlib.pylot as hehe
    #matplotlib.pylot.acorr()
    hehe.acorr() 等价于上面的
    但一旦用别名的话,就不能再用完整的路径调用,像此时再用 matplotlib.pylot.acorr()就是错误的

    import matplotlib.pylot as hehe
    #matplotlib.pylot.acorr()
    hehe.acorr(123) #模块.acorr()
    hehe=100 #重新定义hehe,hehe=100 —100
    hehe.acorr(123)#报错 100.acorr()

    form matplotlib.pylot import acorr as hehe
    acorr() 正确,可以直接调用到指定属性
    模拟命名冲突:
    acorr= 100 acorr-覆盖为100,原有的acorr失去了原有的功能
    acorr() 报错 100()
    hehe()相当于调用acorr()

    import random,math,MySQLdb
    from pyecharts.charts import Bar,Line,Pie
    import random as r,math as m,MySQLdb as db
    from pyecharts.charts import Bar as b,Line as l,Pie as p

    如何安装第三方的模块
    官方的模块库: www.pypi.org
    Pypi社区:全球性质的python社区,官方提供的社区,吸纳了所有的python已知模块
    只要下载模块,就应该到Pypi社区
    如何安装Python的第三方模块:requests为例
    1.打开cmd
    2.pip install requests

    更快的安装方式:清华大学开源软件镜像站
    https://pypi.tuna.tsinghua.edu.cn/simple
    在命令行中 pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

    文件
    一些文件没有后缀,像系统中的host文件
    文件没后缀是可以用的,有后缀是相当于说明这个文件是用什么打开的,属于哪个的。主要是认软件,认解析算法的
    后缀的作用:表明解析方式

    打开文件
    open(file,mode=’r’,buffering=None,encoding=None,errors=None,newline=None,closefd=True)
    file:文件的路径
    mode:打开的方式
    encoding:编码方式

    open()返回的是IO流对象
    IO对象,可以控制文件,获取文件的信息

    开启文件资源-IO流
    f=open(file=’hehe.txt’,mode=’r’,encoding=’utf-8’)
    a=f.read() 读取文件内容
    print(a) 打印文件内容
    f.close() 关闭文件资源

    f=open(file=’E:\技能-小学期python\hehe.txt’,mode=’r’,encoding=’utf-8’)
    #file:相对路径:相对于当前路径的路径 绝对路径从盘符(挂载点)开始的路径
    a=f.read() 读取文件内容
    print(a) 打印文件内容
    f.close() 关闭文件资源
    #如果文件的路径相对于当前目录不会更改,相对于计算机环境可能更改-使用相对路径
    #如果文件的路径无论当前目录还是计算机环境都不改变—绝对路径

    文件模式
    r只读,w只写(覆盖写),a:只写(追加写)
    rb以二进制形式只读 wb以二进制只写 ab:以二进制形式追加写
    open? 查看帮助
    f=open(‘hehe.txt’,’r’,encoding=’utf-8’)
    print(f.read())
    f.close()

    f=open(file=’hehe2.txt’,mode=’w’,encoding=’utf-8’)
    f.write(‘白日依山尽,\n黄河入海流\n’)
    f.close()
    文件里面为
    白日依山尽,
    黄河入海流

    f=open(file=’hehe2.txt’,mode=’a’,encoding=’utf-8’)
    f.write(‘欲穷千里目,\n更上一层楼’)
    f.close()
    文件里面为
    白日依山尽,
    黄河入海流,
    欲穷千里目,
    更上一层楼

    文件对象的属性和方法
    1.closed:判断IO流是否已经关闭
    f=open(file=’hehe2.txt’,mode=’r’,encoding=’utf-8’)
    print(f.read())
    f.close()
    print(f.colsed) 最后结果是True

    2.mode
    f=open(file=’hehe2.txt’,mode=’r’,encoding=’utf-8’)
    print(f.mode) 返回当前的打开模式
    print(f.name)
    f.close() 关闭流,释放资源
    结果最后为
    r
    hehe2.txt

    4.close()
    关闭文件流,IO流
    文件的关闭是极其重要的:IO流在计算机是一种珍贵的资源,使用完毕后,要及时关闭释放,目的:为了给别的程序留下IO空间

    5.read()
    f=open(file=’hehe2.txt’,mode=’r’,encoding=’utf-8’)
    #print(f.read()) 默认:将文件中的所有内容都读取出来
    print(f.read(2)) 读取2个字符
    print(f.read(3)) 继续读取3个字符,在读取前2个字符的基础上
    print(f.read(2)) 输出的是,和换行符(占用一个字符)
    f.close()

    print(f.readline) #默认只读取一行数据
    print(f.readline(3)) 读取这一行当中的前3个字符 给定字符数量,按照字符数量读取
    print(f.readline(2)) 在读取前三个基础上,继续读两个
    print(f.readline(40)) 如果给定的字符,超过本行剩余的字符数量,最多只能读到行末

    f=open(file=’hehe2.txt’,mode=’r’,encoding=’utf-8’)
    print(f.readlines()) 把数据以列表的形式全部打印出来

    write
    f=open(file=’hehe3.txt’,mode=’r’,encoding=’utf-8’)
    f.write(‘我爱学习’)
    f.close()

    f=open(file=’hehe3.txt’,mode=’r’,encoding=’utf-8’)
    f.writelines([‘我爱学习\n’,’我爱祖国\n’])
    f.close()