09-Python模块
导入模块
- 通过import导入模块
import time #导入模块time
time.sleep(50) #睡眠50s
- 导入模块并重命名
import time as t #导入模块time重命名为t
t.sleep(50) #睡眠50s
- 导入模块中部分内容
from time import sleep,time #只导入sleep和time函数
sleep(50) #睡眠50s
- 导入模块所有内容
from time import * #导入所有函数
time.sleep(50) #睡眠50s
自定义模块
- 创建模块myModule

- 编辑模块myModule
def show():
print("我是自定义模块myModule")
- 导入模块myModule
import myModule
myModule.show() #输出:我是自定义模块myModule
包
- 包中含有多个模块,我们使用包来管理多个自定义模块
- 包中需要有一个空文件__init__.py,Python就会将这个目录解析为包。
- 创建包和模块

- 编辑模块myModule
def show():
print("我是自定义模块myModule")
- 导入模块myModule
from myPackage import myModule #从myPackage包中导入模块myModule
__name__属性
模块实际上就是一个普通的python文件,只不过从其他文件开始运行而已
模块myModule:
def show():
print("我是自定义模块myModule")
print(123)
主程序:
import myModule #输出:123
解释:
- 因为导入了模块myModule,所以会运行此模块,所以会输出123
如果不想运行模块中的部分代码,可以使用__name__属性
模块myModule.py:
def show():
print("我是自定义模块myModule")
if __name__ == '__main__':
print("我是主程序")
主程序main.py:
import myModule
结果:
- 运行main.py时 =======> 无任何输出
- 运行myModule.py时 ===> 输出:我是主程序
time模块
导入模块:
time.sleep(50) #睡眠50s
常用函数:
t = time.time() #返回当前的时间戳(自1970年1月1日8:00到现在的秒数)
t = time.ctime() #返回系统定义好的时间格式
t = time.gmtime() #返回时间对象(UTC时间),tm_wday的0表示周一
t = time.localtime() #返回时间对象(当地时间),tm_wday的0表示周一
t = time.mktime(<struct_time>) #通过时间对象返回时间戳
s = time.strftime(“%Y-%m-%d %H:%M:%S”,<struct_time>) #根据时间对象返回自定义格式(str类型)
t = time.strptime(“2018-10-08 21:55:01”,“%Y-%m-%d %H:%M:%S”) #根据自定义格式转化为时间对象
#参数2用于解析时间的格式
时间类
- 时间对象是类time.struct_time创建的对象
import time
t = time.localtime() #返回时间对象(当地时间)
时间对象t的数据成员:
tm_year=2020 #年
tm_mon=6 #月
tm_mday=5 #日
tm_hour=11 #时
tm_min=0 #分
tm_sec=0 #秒
tm_wday=4 #星期
tm_yday=157 #一年中第几天
自定义时间格式
import time
t = time.localtime() #返回时间对象(当地时间)
s = time.strftime("%Y-%m-%d %H:%M:%S",t)
print(s) #输出:2020-06-05 11:07:56
解释:
- strftime函数将时间对象转化为自定义格式的时间(str格式)
- %Y等为占位符
常用占位符:
%Y #年(4位数)
%y #年(2位数)
%m #月
%d #日
%H #时
%M #分
%S #秒
datetime模块
datetime也是一个比较常用的时间模块,与time模块类似
import datetime
print(datetime.datetime.now()) #返回系统定义的格式化时间
getpass模块
此模块用于登录,如输入密码时可以将密码隐藏。
import getpass
passwd=getpass.getpass("请输入密码:") #在终端上运行才可以隐藏输入密码
print(passwd)
注意: 需要打开终端运行此代码!才会又正确的现象。
math模块
导入模块:
import math
常用函数:
math.sqrt(4) #求平方根
math.log(1,2) #求以 2 为底的 1 的对数
math.log10(1) #求以 10 为底 1 的对数
math.sin(10)
math.cos(10)
math.tan(10)
math.pi #3.141592653589793
math.e #自然对数的底
cmath模块
导入cmath模块:
import cmath
- cmath与math类似,但cmath的计算结果为复数。
- 若希望得到的结果不是复数,可用abs()求模。
示例:
import cmath
num = cmath.sqrt(4) #求平方根
print( num ) #输出:(2+0j)
print( abs(num) ) #输出:2.0
random模块
导入random模块:
import random
常用函数:
random.random() #返回(0到1)的随机小数
random.randint(1,6) #返回[0,6]的随机整数
random.randrange(1,6) #返回[0,6)的随机整数
random.choice("hello") #返回随机一个字母,参数可以是一个列表
random.sample("hello",2) #随机返回两个元素,参数可以是一个列表
hashlib模块
通过hashlib可以通过不同的算法产生字符串的散列值
导入hashlib模块:
import hashlib
示例:
import hashlib
m=hashlib.md5() #使用md5进行加密,加密算法可以换(如sha256等)
m.update('hello'.encode('utf8')) #产生字符串'hello'的散列值
print(m.hexdigest()) #输出散列值
m.update('88888'.encode('utf-8')) #此时的散列值与之前的有关("hello88888")
解释:
- 上例用的是md5算法,可根据情况选择合适的算法。
sys模块
这个模块与Python解释器相关
导入sys模块:
import sys
常用函数:
sys.argv #返回参数列表,第一个元素为脚本文件名
sys.exit(0) #退出程序,0为正常退出
sys.version #返回解释器的版本信息
sys.maxint #返回最大整数值(Python2)
sys.maxsize #返回最大整数值(Python3)
sys.platform #返回操作系统平台名称,win为win32,linux返回linux
os模块
这个模块与操作系统交互
导入os模块:
import os
执行命令-system函数:
import os
os.system("ls -l") #运行命令,最后返回0则执行成功
执行命令-popen函数:
import os
ret=os.popen("dir") #返回一个管道对象
print(ret.read()) #得到命令的输出结果
ret.close() #使用完关闭
常用函数
import os
os.getcwd() # 返回当前工作目录
os.chdir("E:\MyFiles") # 转移工作目录
os.curdir # 返回.
os.pardir # 返回..
os.mkdir("Myfiles") # 创建一个文件夹
os.makedirs('abc\\def') # 连续创建多层目录
os.remove("1.txt") # 删除一个文件
os.rmdir("Myfiles") # 删除一个文件夹
os.removedirs('1\\2\\3') # 连续删除多层空目录(非空则不删)
os.listdir("Myfiles") # 返回一个列表,包含目录中所有文件个子目录
os.rename(src, dst) # 将src重命名为dst
os.stat("相册.zip") # 返回一个包含文件信息的元组
os.sep # 返回路径分隔符,win为\,linux为/
os.linesep # 返回行分隔符,win为\r\n,linux为\n
os.pathsep # 返回路径分隔符,win为;,linux为:
os.name # 返回当前平台,win为nt,linux为posix
os.environ # 返回一个包含系统环境变量的字典
os.path.abspath(path) #返回绝对路径
os.path.split(path) #将路径拆成目录和文件名的二元组返回
os.path.dirname(path) #返回path的目录,机械化地返回(若path为相对路径,则返回"")
os.path.basename(path) #返回路径最后的文件夹名或文件名(机械化地返回)
os.path.exists(path) #判断path是否存在
os.path.isabs(path) #判断path是否为绝对路径
os.path.isfile(path) #判断path是否为一个存在的文件
os.path.isdir(path) #判断path是否为一个存在的文件夹
os.path.getatime(path) #返回path最后存取时间
os.path.getmtime(path) #返回path最后修改时间
re模块-正则表达式
re模块利用正则表达式来匹配字符串
正则表达式
. #匹配除换行外任一字符
+ #匹配1到多个字符
* #匹配0到多个字符
? #匹配0或1个字符
^ #只在开头匹配("^hello")
$ #只在结尾匹配("hello$")
| #或(比如com|cn匹配com或者cn)
{}
{5} #匹配5次
{1,3} #匹配1到3次
[]
[c,d] #匹配c或d
[a-zA-Z] #匹配所有字母
[^0-9] #匹配所有非数字
()
((as)+) #分组
\d #匹配所有数字
\D #匹配所有非数字
\s #匹配所有空白字符
\S #匹配所有非空白字符
\w #匹配所有数字和字母
\W #匹配所有非数字和字母字符
\\\\ #匹配\
注意:
- 匹配反斜杠本身时,需要经过两次转义。
\\\\向解释器转义得\\,再向re转义得到\- 在字符串前加r则取消转义。
示例:
文本:hello world 想匹配出world 可以用正则表达式:w..l
文本:abcaaa 想匹配出a和aaa 可以用正则表达式:a+
文本:r"a\b" 想匹配出'a\b' 可以用正则表达式:"a\\\\b"
文本:aabc1111abc222aaabc 想匹配出'abc'、'aabc' ... 可以用正则表达式:a+bc
使用re模块
导入re模块:
import re
findall():
ret=re.findall("w..l","hello world") #返回一个列表(包含所有匹配项)
search():
ret=re.search("hello","hello,world") #搜索第一个满足项,返回一个对象
ret.group() #返回匹配项
split():
ret = re.split("a","1a2a3a") #用符号'a'分割字符串(返回一个列表)
ret = re.split("[2,a]","1a2a3a") #先用符号'2'分割,再用符号'a'分割
match():
ret=re.match("hello","hello,world") #只在开头搜索,并且搜索第一个满足项,返回一个对象
ret.group() #返回匹配项
sub():
ret=re.sub("4+","5","4444abc44abc") #把4+换成5(结果为'5abc5abc')
给匹配项命名:
ret=re.search("(?P<year>\d{4})-(?P<month>\d{2})","sf1998-12-16") #给匹配项命名
print(ret.group()) #输出全部匹配项(1998-12)
print(ret.group('year')) #输出year(1998)
解释:
- ?P表示对此匹配项命名
- 每一个匹配项用小括号( )包裹
- 其中,(?P\d{4})表示正则为\d{4},名字为year
compile():
ret1=re.compile("4+")
ret2=ret1.findall("hello44,abc444")
print(ret2) #得到 ['44', '444']
解释:
- 先定义好正则表达式,再进行匹配。
- 此正则表达式可以多次使用。
最后
本文所总结的模块都是常用的,还存在许许多多其他的函数供我们调用,具体可以查看文档。
模块是Python强大的部分之一,需要好好学习。
09-Python模块的更多相关文章
- python 学习第五天,python模块
一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...
- Python模块的介绍
Python模块的学习: 1.os模块: 下面只对os模块中几个比较常用的方法做一些简单的示例: os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在do ...
- python模块介绍- multi-mechanize 性能测试工具
python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...
- python模块部分----模块、包、常用模块
0.来源:https://www.cnblogs.com/jin-xin/articles/9987155.html 1.导入模块 1.1模块就是一个python文件,模块名是文件名 1.2导入模块的 ...
- python 模块和包
一,模块 1,什么是模块? 常见的场景: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py 的后缀. 但其实 import 加载的模块分为四个通用类别: 1,使用pyt ...
- Python 模块 re (Regular Expression)
使用 Python 模块 re 实现解析小工具 概要 在开发过程中发现,Python 模块 re(Regular Expression)是一个很有价值并且非常强大的文本解析工具,因而想要分享一下此 ...
- Python 模块之Logging——常用handlers的使用
一.StreamHandler 流handler——包含在logging模块中的三个handler之一. 能够将日志信息输出到sys.stdout, sys.stderr 或者类文件对象(更确切点,就 ...
- python安装环境配置、python模块添加、sublime text编辑器配置
前提: 本文讲述的是 windows环境 python相应的安装配置. 进入官网找安装包,官网地址如下:https://www.python.org/downloads/ 找到相应2.7.x或3.x ...
- Python - 模块(二)
目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...
- python模块(转自Yuan先生)
模块&包(****) 模块(modue)的概念: 在计算机程序的开 ...
随机推荐
- SQL 多表关联更新语句
A表WHERE条件来自B表查询结果集 UPDATE a SET a.is_sync = 0 FROM A表 a LEFT JOIN B表 b ON a.order_id = b.order_id AN ...
- Intel Pentium III CPU(Coppermine, Tualatin) L2 Cache Latency, Hardware Prefetch特性调查
这几天,偶然的机会想到了困扰自己和其他网友多年的Intel Pentium III系列处理器缓存延迟(L2 Cache Latency),以及图拉丁核心版本是否支持硬件预取(Hardware Pref ...
- Node.js 万字教程
0. 基础概念 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动.非阻塞式 I/O 模型,让 JavaScript 运行在服务端的开发平台. ...
- MacOS M1芯片openmp库出现mach-o file, but is an incompatible architecture (have ‘arm64‘, need ‘x86_64‘问题解决
目录 1. 问题描述 2. 问题出现原因 3. 解决方案 编译安装 使用Homebrew安装 Reference 1. 问题描述 报错如下所示: ImportError: dlopen(/Users/ ...
- 显示器AVG、DVI、HDMI、DisplayPort、Type-C、雷电接口
在近十年的发展,显示设备的接口发生了巨大的改变.以前使用比较多的是蓝色VGA接口,接著出现了白色的DVI接口,当遇到不同接口时,还得买转接头进行转接.后来,又有了HDMI等接口,现在则出现DP和USB ...
- python教程3.3:字符和编码
1.二进制 计算机只能存储和识别二进制,但是人类常用的字母.数字.汉字怎么用计算机存储和识别呢? 人类强行约定一个对应表,把数字.字母和数字进行对应上,这样就可以用二进制表示字母和数字了. 2.ASC ...
- java中调用exe程序和问题处理
常规方法如下: public class RunExe { public static void main(String[] args) { try { // exe文件的完整路径 String fi ...
- 关于UE4对象静态/动态的销毁问题整理(AddToRoot、TWeakObjectPtr)
1.非UObject对象 即非UObject常规C++对象,创建销毁不赘述.但可以用智能指针:从而不用关心销毁逻辑: TSharedPtr<ClassA> MyObj = MakeShar ...
- tar和zip包加密解密压缩
1.概述 嗯,最近有些机密文件无处安放,因为太机密了,后来确定加密后放到服务器上.研究一番后发现tar和zip命令都能实现,所以在此记录一下. 压缩:tar -zcvf - ./packageTest ...
- MyBatis数据源模块源码分析
数据源对象是比较复杂的对象,其创建过程相对比较复杂,对于 MyBatis 创建数据源,具体来讲有如下难点: MyBatis 不但要能集成第三方的数据源组件,自身也提供了数据源的实现: 数据源的初始化参 ...