python基础--09 模块

1.什么叫模块

python基础--09 模块_第1张图片

 1.导入标准模块

#导入标准模块方法1
import math  #关于数学运算的模块
print(id(math))
print(type(math))
print(math)
print(math.pi)
print(dir(math))
#导入标准模块方法2
from math import pi  #只导入math当中的pi
print(pi) #直接使用pi
'''
运行结果:
1689559949544


3.141592653589793
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 
'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 
'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 
'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 
'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh', 'tau', 'trunc']
3.141592653589793
'''

2.导入自定义模块

先自己创建一个calc.py  里面有add,fun的接口

def add(a,b):
    return a + b
def fun(a,b):
    if a> b:

在demo.py里加入calc模块

import calc
print(calc.fun(1313,34))
print(calc.add(12,45))
'''
1313
57
'''

3.以主程序形式运行

python基础--09 模块_第2张图片

 举列子:

calc.py

def add(a,b):
    return a + b
def fun(a,b):
    if a> b:
        return a
    else:
        return b

print(add(12,14))

dome.py

import calc
print(calc.fun(1313,34))
'''
26
1313
'''

当dome运行时 calc当中的print也运行了 

解决如下:

calc.py

def add(a,b):
    return a + b
def fun(a,b):
    if a> b:
        return a
    else:
        return b
if __name__ == '__main__':
    print(add(12,14))

只有当calc.py主程序运行时才运行 print(add(12,14)) 而当dome.py运行calc不是主程序运行所以不会执行print(add(12,14))

4.python当中的包

python基础--09 模块_第3张图片

python基础--09 模块_第4张图片

 python基础--09 模块_第5张图片

 举例子1:创建一个包--bao1 创建一个模块mudule1

python基础--09 模块_第6张图片

 在mudule1.py中有变量与函数如下:

a = 1000
def fun():
    print("mudule")

现在怎么用包的变量与函数:

在dome目录下创建dome-bao.py如下:

import bao1.mudule1 as ma    # ma 是 bao1.mudule1的别名
print(ma.a)
ma.fun()
'''
1000
mudule
'''

这样就可以调用包的变量与函数

总结:

#使用import 方式导入时 只能跟包名或者模块名
import bao1   #导入包
import calc   #导入模块
#使用from---import 可以导入包,模块,函数,变量
from bao1 import mudule1  #导入模块
from bao1.mudule1 import a #导入变量
from bao1.mudule1 import fun #导入函数

5.python当中常用的内置模块

python基础--09 模块_第7张图片

 6.第三方模块的安装及使用

在线安装:windows + R 输入cmd 

pip install schedule 安装schedule模块

python基础--09 模块_第8张图片

用pip list 指令可以查找安装哪些模块

import schedule
def job():
    print('在')
schedule.every(3).seconds.do(job)  #3S执行一次job函数
while True:
    schedule.run_pending() #启动执行

7.总结

python基础--09 模块_第9张图片

8.编码格式 

python基础--09 模块_第10张图片

在.py最上面加  #endcoding =gbk  改为gbk 默认是UTF- 8.

9.文件的读写

python基础--09 模块_第11张图片

 python基础--09 模块_第12张图片

 1.txt 内容如下:并且是GBK编码格式python基础--09 模块_第13张图片

file = open('1.txt','r') # 读取当前目录下1.txt 的文件 file 相当于 1.txt 中文的要用gbK格式
print(file.readlines()) # 读取1.txt里所有内容  返回的是一个列表
file.close() #关闭文件
'''
['中国\n', '管理\n', '好\n', '接口']
'''

 10.文件的打开模式

python基础--09 模块_第14张图片

#把666.jpg 复制一份 777.jpg
src_file = open('666.jpg','rb')
target_file = open('777.jpg','wb')
target_file.write(src_file.read())  #边写边读
src_file.close()
target_file.close()

11.文件对象常用的方法

python基础--09 模块_第15张图片

 12.with语句

python基础--09 模块_第16张图片

with open('1.txt','r') as file:  #file取别名
    print(file.read())   #不需要close 当with结束 自动关闭
# MyContentMgr 实现了特殊方法 __enter__与 __exit__称该类遵守上下文管理器协议
#MyContentMgr()实例对象称为上下文管理器
class MyContentMgr(object):
    def __enter__(self):
        print('enter方法被调用了')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('exit方法被调用了')
    def show(self):
        print('show方法被调用了')

with MyContentMgr() as file:
    file.show()
'''
enter方法被调用了
show方法被调用了
exit方法被调用了
即时show发生异常 exit也还是会被调用
以后对于文件操作可以用with语句 提高安全性
'''
#文件复制操作
with open('666.jpg','rb') as str_file:
    with open('999.jpg','wb') as target_file:
        target_file.write(str_file.read())

13.目录的操作

python基础--09 模块_第17张图片

 1. os模块操作操作系统

import os
#os.system('calc.exe')    #打开计算器
#os.system('notepad.exe') #打开记事本
os.startfile('D:\\QQ\\Bin\\QQ.exe') #直接调用可执行文件

2.os模块操作目录

python基础--09 模块_第18张图片

#os模块是和操作系统相关可以对操作系统进行操作
import os
print(os.getcwd()) #当前路径
lst = os.listdir('../dome') #获取dome目录下文件与目录
print(lst)
#os.mkdir('aaa') #当前路径创建目录
#os.makedirs('A/B/C') #创建多级目录
os.rmdir('aaa') #删除当前aaa目录
os.removedirs('A/B/C') #删除当前多级目录
os.chdir('D:\python_study\dome') #设置当前路径

14 .os.path模块 操作目录

python基础--09 模块_第19张图片

import os.path
print(os.path.abspath('dome')) #获取dome目录的绝对路径
print(os.path.exists('../dome'))  #判断doem是否存在
print(os.path.exists('../dome11'))
print(os.path.join('D:\python_study\dome\dome','dome-bao.py')) #目录与文件拼接
print(os.path.split('D:\python_study\dome\dome\dome-bao.py')) #分离文件与目录
print(os.path.splitext('dome-bao.py')) #文件名与后缀
print(os.path.basename('D:\python_study\dome\dome\dome-bao.py')) #从目录中提取文件名
print(os.path.dirname('D:\python_study\dome\dome\dome-bao.py'))  #从路径提取目录
print(os.path.isdir('D:\python_study\dome\dome\dome-bao.py')) #是否为路径 有文件名所以不是
'''
运行结果:
D:\python_study\dome\dome
True
False
D:\python_study\dome\dome\dome-bao.py
('D:\\python_study\\dome\\dome', 'dome-bao.py')
('dome-bao', '.py')
dome-bao.py
D:\python_study\dome\dome
False
'''
#获取指定目录下的所有py文件
import os
path = os.getcwd() #获取当前路径
lis = os.listdir(path) #获取路径下的所有目录与文件
for filename in lis:
    if filename.endswith('.py'):  #如果以.py
        print(filename)
        
#递归遍历路径下所有文件
path1 = os.getcwd()
yuanzu = os.walk(path1) #递归遍历路径下所有文件 并且返回的是一个元组
for dirpath,dirname,filename in yuanzu:   # 元组里有 dirpath,dirname,filename
    # print(dirpath)
    # print(dirname)
    # print(filename)
    # print('------------------')
    for dir in dirname:
        print(os.path.join(dirpath,dir)) # dirpath下所有目录

    for file in filename:
        print(os.path.join(dirpath,file)) # dirpath下所有文件
    print('------------')

15.总结

python基础--09 模块_第20张图片

你可能感兴趣的:(python基础,python)