模块的学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块的学习相关的知识,希望对你有一定的参考价值。

模块:实现某个功能的代码集合

模块分为三种:
1.自定义模块(就是自己写的python文件)
2.内置标准模块(标准库)
3.开源模块(第三方提供的)

导入模块的方式:
导入模块,实际上就是,就需要导入的模块,引入到导入地方,运行一遍

导入包:
导包的实质就是将 包下的__init__.py导入

在__init__.py 中导py,需要 使用 from . import 模块名

import customModule as cm #这句话的意思就是 ,将 customModule这个python文件执行一遍,并赋值给 cm

from customModule import name #这句话的意思,就是直接将customModule里的name引过来执行以下

# print(cm.name)
print(name)
#包下面的__init__.py
# Author:zylong
from . import customModule as cm

print("modelIntroduction====__init__.py")

 

导包:
# Author:zylong
#例如:导入 modeIntroduction这个包
#导包的前提就是需要这个包在python的path中,这里需要使用 os和sys模块
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
#如果在这里引入modelIntroduction包下的所有py,就需要在modelIntroduction的__init__.py中,将包导入
import modelIntroduction

print(modelIntroduction.cm.name)

 

time&datetime
# Author:zylong
import time
#这个是当前时间的毫秒值
time.time()
#暂停几秒
time.sleep(0.1)

print(time.ctime())
#Fri Dec 15 09:55:59 2017

#这个就是struct_time 就是时间元组
print(time.gmtime())
#这个返回的是utc的
#time.struct_time(tm_year=2017, tm_mon=12, tm_mday=15, tm_hour=1, tm_min=56, tm_sec=41, tm_wday=4, tm_yday=349, tm_isdst=0)
x = time.localtime()
print(time.asctime(x))
#Fri Dec 15 01:57:50 2017

print(time.localtime())
#这个返回的是utc-8的
#time.struct_time(tm_year=2017, tm_mon=12, tm_mday=15, tm_hour=9, tm_min=58, tm_sec=35, tm_wday=4, tm_yday=349, tm_isdst=0)

print(time.mktime(x))
#1513303240.0 讲元组转为毫秒

print(time.strftime("%Y-%m-%d %H:%M:%S"))
print(time.strftime("%Y-%m-%d %H:%M:%S",x))
#2017-12-15 10:03:14 如果不传,就是默认时间,或者可以传一个struct_time

print(time.strptime("2017-12-15 10:03:14","%Y-%m-%d %H:%M:%S"))
#time.struct_time(tm_year=2017, tm_mon=12, tm_mday=15, tm_hour=10, tm_min=3, tm_sec=14, tm_wday=4, tm_yday=349, tm_isdst=-1)

import datetime as dt
#datetime 中 有 date支持 年月日 ,time是支持 时分秒的
print("=======================datetime================================")
print(dt.datetime.now())
#2017-12-15 10:11:04.201889 这个时间后会再更一个201889
print(dt.datetime.now() + dt.timedelta(days=3))

print(dt.datetime.now() + dt.timedelta(hours=3))

 


random模块
# Author:zylong
#随机数

import random

#生产0-1之间的随机数
print(random.random())

#生产[0-3]之间的随机整数
print(random.randint(0,3))

#生产[0-3)之间的整数 ,就是range()函数
print(random.randrange(0,3))
# list = [1,2,3,4]
# print(random.choice(list))
lista = [i for i in range(65,91)]
listb = [i for i in range(97,123)]
listc = [i for i in range(0,10)]

lista.extend(listb)
lista.extend(listc)
print(lista)
# a.append(listc)

# 65-90 A-Z
print(chr(65))
print(chr(90))

#97-122 a-z
print(chr(97))
print(chr(122))

#生产一个验证码
a = random.sample(lista,4)
for i in range(len(a)):
    if a[i] > 10:
        a[i] = chr(a[i])
    else:
        a[i] = str(a[i])
#可以发现 join函数,如果有数字的话不会自动转换(所以需要在列表中进行转换)
b = "".join(a)
print(b)

 

os和sys模块

# Author:zylong
import os
#提供对操作系统进行调用的接口
#获取当前工作目录
print(os.getcwd())
#改变目录 chdir 就是changedir
os.chdir("D:\pythonworkspace\oldboy\day5")
print(os.getcwd())
#
os.curdir
print(os.curdir)#返回"."

print(os.pardir)

# os.makedirs("test/test")#不能重复创建
# os.removedirs("test/test")#不能重复删除(如果目录不为空目录着停止)
"""
mkdir创建一个目录
rmdir删除一个目录
"""

print(os.listdir())
#将当前目录中的test目录或文件更改为 test1
# os.rename("test","test1")
#返回这个文件的信息
print(os.stat("test"))
#操作系统的分隔符
print(os.sep)
#操作系统的 环境变量的分隔符
print(os.pathsep)
#操作系统的换行符
os.linesep

#===========================sys模块======================================================#
import sys,time
#输出,这个输入是往后最佳
# for i in range(100):
#     time.sleep(0.1)
#     sys.stdout.write("#")
#     sys.stdout.flush()
print(sys.argv)
#python的环境变量
sys.path
#操作系统名称
sys.platform

 

 

hashlib模块:

# Author:zylong
import hashlib
#这里就是加密使用的库

#1.使用md5
m = hashlib.md5()
m.update(b"zhang")
print(m.digest())
print(m.hexdigest())

#这个更强的加密
import hmac

#参数必须是字节型的
h = hmac.new("张玉龙".encode("utf-8"),"张娟".encode("utf-8"))

print(h.hexdigest())
#json 和pickle 在学文件操作的时候学过了

 

 

shutil模块:

# Author:zylong
#文件,文件夹 的 解压缩和复制处理
import shutil
#这个方法是将 内容拷贝到另一个文件中 可以部分内容 (因为这里面传的是两个文件流)
# shutil.copyfileobj()

#这个是直接copy文件
shutil.copyfile("shutilModule.py","aa")

#这个即copy文件又copy权限
# shutil.copy()
#就是将制定的文件夹下所有的文件copy到目标文件下
# shutil.copytree("D:/pythonworkspace/oldboy/day5","D:/aa")
# shutil.rmtree("D:/aa")

#压缩文件和解压

#一般直接使用(make_archive:可以直接对文件或者文件夹压缩),可支持 “zip”, “tar”, “bztar”,“gztar”
# shutil.make_archive("D:/pythonworkspace/oldboy/day5/homework.py",‘zip‘)

#如果对zip
import zipfile
#1.压缩
# z = zipfile.ZipFile("zz.zip","w")
# z.write("aa")
# #这里可以添加多个
# z.write("shutilModule.py")
# z.close()
#2.解压
# z1 = zipfile.ZipFile("zz.zip","r")
# #解压所有
# z1.extractall(path="D:/pythonworkspace/oldboy/day5/")
# z1.close()

# import tarfile
# t = tarfile.open("zz.tar","w")
# t.add("D:/pythonworkspace/oldboy/day5/shutilModule/zz.zip")
# t.add("D:/pythonworkspace/oldboy/day5/shutilModule/aa")
# t.close()
#
# # 解压 类似zip
# tar = tarfile.open(‘zz.tar‘,‘r‘)
# tar.extractall()  # 可设置解压地址
# tar.close()

 

xml模块

# Author:zylong
import xml.etree.ElementTree as et
#xml文档的处理,xml只有一个根节点
xml = et.parse("test.xml")
root = xml.getroot()
#root.tag 获取的是跟节点
# print(root)
# print(root.tag)
for tag in root:
    print(tag.tag,tag.attrib)
    #如果tag下还有节点,可以再循环进去

#只遍历指定节点(这个节点如论在那一层都可以)
for node in root.iter("a"):
    print(node.text)
#修改节点里的值
for node in root.iter("a"):
    node.text = node.text + "b"
#需要文档描述
xml.write("test.xml",encoding="utf-8",xml_declaration=True)
#删除 直接就是
# root.remove(节点)

#创建xml
#设置根节点
et.Element("")
et.SubElement("根节点","子节点名称",attrib={"enrolled":"yes"})

 

re 正则表达式模块:

# Author:zylong
#正则表达式
import re
string = "a12b43dfa#dafao%pka12498ok"
#match就是开头匹配
print(re.match("a",string))
# . 匹配所有字符,+这个字符一次或多次
print(re.search(".+",string))
# $ 字符结尾
# ? 0次或者1次
#{m} 匹配前一个字符m次
#{n,m} 匹配前一个字符 n到m次
# | 匹配左右或者右边的字符
#‘(...)‘
"""

‘\d‘    匹配数字0-9
‘\D‘    匹配非数字
‘\w‘    匹配[A-Za-z0-9]
‘\W‘    匹配非[A-Za-z0-9]
‘s‘     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 ‘\t‘


"""

 

 















以上是关于模块的学习的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

如何有条件地将 C 代码片段编译到我的 Perl 模块?

CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段

如何将字符串数据从活动发送到片段?

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段