python:模块

【●】模块
一、模块和文件
1.什么是模块
2.模块文件
一个.py 文件就是一个模块。

模块是含有一些列数据,函数,类等的程序。    
    
作用 把相关功能的函数等放在一起有利于管理,有利于多人合作开发。

导入模块后可以使用模块里定义的变量   函数  及类 。

二、导入模块
1.搜索路径
 ● 模块的导入需要一个叫做“路径搜索”的过程。
 ● Python在文件系统“预定义区域”中查找要调用的模块
 ● 搜多路径在sys.path中定义

◆ 查找模块对应的.py文件
 
]# find    /  -name  "shutil.py" 
  
[root@teacher code]# find    /  -name  "shutil.py" 
/var/ftp/upload/Python-3.6.10/Lib/shutil.py
/usr/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/shutil.py
/usr/lib64/python3.6/shutil.py
/usr/local/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/shutil.py
/usr/local/lib/python3.6/shutil.py
[root@teacher code]# 
[root@teacher code]# vim  /usr/local/lib/python3.6/shutil.py  # 查看源代码
 
  
  
例子  自己写一个Python 脚本  让其他人可以导入使用
[root@teacher ~]# cat /code/module.py 
name = "BOB"
school = "Taren"
L = list(range(1,11))

def  pri():
    print("你好")

def info():
    print("#" * 10)
[root@teacher ~]#

[root@teacher code]# cat /code/mk.py
import   module
print ("调用其他模块的输出")
print(module.name,module.school)
module.info()
print(module.L)

age = 10
print(age)
module.pri()
[root@teacher code]# 

  [root@teacher code]# python3  /code/mk.py
调用其他模块的输出
BOB Taren
##########
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
10
你好
[root@teacher code]# 


◆ 查看模块的默认路径
>>> import sys
>>> print(sys.path)   #首先在当前目录下查找其次才对后面路径下依次查找。
['', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/usr/lib64/python3.6/site-packages', '/usr/lib/python3.6/site-packages']
>>>

◆ 可以导入的模块对应的文件拷贝到查找的默认某个目录下,方便导入
# mv /code/module.py   /usr/local/lib/python3.6/


2.模块导入方法
 ● 使用import导入模块。   import  +模块名    #只导入一个模块。
 ● 可以在一行中导入多个模块,但是可读性会下降。import  +模块名,模块名, 模块名 ....  #一次导入多个模块。
 ● 可以只导入模块的某些特征。  from  +模块名  +import  +属性
 ● 导入模块时,可以为模块取别名。 import  +模块名 +as  +别名
 ● 可以导入模块的所有特征。  from  +模块名  +import  + '*'号

[root@dc python]# vim mk.py
#import module
#module.pri()

#from module import info
#info ()
#pri()

#from module import *
#info()
#pri()

import subprocess as s
s.run("ls /root/python",shell=True)
[root@dc python]# python3 mk.py


3.导入和加载
 ● 当导入模块时,模块的顶层代码会被执行。
 ● 一个模块不管被导入(import)多少次,只会被加载(load)一次。


4.模块的分类
 
1. 内置模块(在python3 程序内部,可以直接使用)
  
2. 标准库模块(在python3 安装完后就可以使用的 )
  
3. 第三方模块(需要下载安装后才能使用)
  
4. 自定义模块(用户自己编写.py脚本文件, 定义的变量   函数  及类)
    

5.总结一下 我已经使用过的内置模块
time   datetime   os   sys   shutil   random  pickle  subprocess


三、内置模块
1.hashlib模块  (对数据的完整性做校验)
 ● hashlib用来替换md5和sha模块,并使他们的API一致,专门提供hash算法。
 ● 包括md5、sha1、sha224、sha256、sha386、sha512,使用非常简单,方便。
 
>>> import  hashlib    #导入模块
>>> sufa = hashlib.md5()    #指定使用的算法
>>> data1 = "abcd"     # 要验证的数据
>>> sufa.update(data1)  #报错
>>> sufa.update(data1.encode()) #需要转码才可以验证
>>> x1 = sufa.hexdigest()  #把获取到的摘要信息存储到变量x1
>>> x1    # 输出摘要信息
'e2fc714c4727ee9395f324cd2e7f331f'
>>>   
>>> data1 ="abcdeffff"   #更新源数据
>>> sufa.update(data1.encode())  #再次生成摘要信息
>>> x2=sufa.hexdigest() #把获取到的摘要信息存储到变量x2
>>> x2 # 输出摘要信息
'8f589a55fc205e3bb1570098361db4b2'
>>> 
  通过比较  摘要信息判断数据是否发生改变
 >>> if  x1 != x2:   
...     print("数据被改变")
... else:
...     print("数据无变化")
... 
数据被改变
>>>  


2.tarfile模块
 ● tarfile模块允许创建、访问tar文件。
 ● 同时支持gzip、bzip2格式。

>>> import subprocess
>>> subprocess.run('du -sh /etc',shell=True)
31M     /etc
CompletedProcess(args='du -sh /etc', returncode=0)
>>> 
>>> import tarfile
>>> 
>>> tar = tarfile.open("/root/etc.tar.gz",'w:gz')
>>> tar.add('/etc')
>>> tar.close()

>>> subprocess.run('du -sh /root/etc.tar.gz',shell=True)
6.8M    /root/etc.tar.gz
CompletedProcess(args='du -sh /root/etc.tar.gz', returncode=0)
>>> 

● 回顾 sys.argv    
  获取执行执行python脚本时  脚本后跟的位置参数 例如
                                                                
 ]# python3    /code/test1.py     a.txt     b.txt     c.txt   f    200
  
  执行脚本后 能够输出   3个文件的名字 例如
  a.txt   
  b.txt
  c.txt  
  f
  200
  
  
  import  sys
#计算任意个 数字相加的和  python3  testa.py  1 4 8 9  12  34
x = sys.argv
#print(x)
#print(x[1:])
he = 0
for  data in  x[1:]:
        he += int(data)

print(he)

#使用偏函数的方式实现 
filter(lambda i : str.isnumeric(i),x)

sum( [ int(i) for i in  a[1:] ])
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值