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)的概念: 在计算机程序的开 ...
随机推荐
- dotnet SemanticKernel 入门 开篇
本文将开坑告诉大家什么是 SemanticKernel 以及如何使用框架 众所周知 GPT 是一个大语言模型,能够参与的输入和输出是文本内容.而想要让 GPT 完成各项功能,则需要对接现有的编程世界. ...
- html+jq实现全国省的单选,弹框输入input
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- Spring学习一(依赖注入/Bean/注解等)
1.Spring依赖注入的方式. 2.依赖注入的类型 3.Bean的作用域 4.自动注入 5.使用注解的方式 6.在spring配置文件中引入属性文件 1.Spring依赖注入的方式 平常的java开 ...
- go-zero modd开发配置
目录 go-zero modd开发配置 modd配置 项目打包编排文件 nginx配置文件 各服务中的配置里要写上如下配置 go-zero modd开发配置 modd配置 modd.conf #use ...
- windows10 64 解决 exec:"gcc" executable file not found in %PATH%报错问题
1.下载编译好的包 https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 这里我选择64位的 2.解压完之后,配置环境变量. 解压完到 ...
- 启动docker某个image(镜像)的已经关闭的container(容器)
1.创建一个后台运行 ubuntu 容器 root@haima-PC:/home/haima/Desktop# docker run -d --name ubuntu-lnmp ubuntu bf24 ...
- idea修改项目中某个模块名称
1.修改模块名称 2.修改文件夹名称 3.修改本模块里面pom的名称 4.修改其他模块里面引用的名称
- 现代农业|AIRIOT智慧农业管理解决方案
智慧农业是现代化技术在农业领域的应用和成果,其中物联网技术在促生产.保产量和降本增效方面起到了至关重要的作用.运用传感技术和软件平台系统对农业生产进行智能化平台化管理,解决掉传统农业问题的诸多痛点 ...
- 基于Python实现MapReduce
一.什么是MapReduce 首先,将这个单词分解为Map.Reduce. Map阶段:在这个阶段,输入数据集被分割成小块,并由多个Map任务处理.每个Map任务将输入数据映射为一系列(key, va ...
- 基于webapi的websocket聊天室(三)
上一篇处理了超长消息的问题.我们的应用到目前为止还是单聊天室,这一篇就要处理的多聊天室的问题. 思路 第一个问题,怎么访问不同聊天室 这个可以采用路由参数来解决.我把路由设计成这样/chat/{roo ...