一、什么是模块

模块,用一砣代码实现了某个功能的代码集合。

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。

如:os 是系统相关的模块;file是文件操作相关的模块

模块分为三种:

  • 自定义模块
  • 内置标准模块(又称标准库)
  • 开源模块

time & datetime模块

1、当前时间

>>> import time
>>> time.time()
1450681042.751>>> time.localtime(time.time())
time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=0, tm_sec=2, tm_wday=0, tm_yday=355, tm_isdst=0)>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'2015-12-21 15:01:28'>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2015, 12, 21, 14, 58, 38, 279000)>>> datetime.today()
datetime.datetime(2015, 12, 21, 14, 59, 20, 204000)>>> now = datetime.now()
>>> now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond>>> now.isocalendar() # 2015年 第52周 星期一
(2015, 52, 1)>>> now.isoweekday() # 星期几,1:Monday; 而 now.weekday() 返回值从0开始

2、日期字符串转换为日期

>>> s='2015-12-21 15:01:28'
>>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
datetime.datetime(2015, 12, 21, 15, 1, 28)>>> datetime.datetime.strftime('%Y/%m/%d %H:%M:%S', timeTuple)>>> s='2015-12-21 15:01:28'
>>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=1, tm_sec=28, tm_wday=0, tm_yday=355, tm_isdst=-1)>>> time.strftime('%Y/%m/%d %H:%M:%S',timeTuple)

3、python中时间日期格式化符号

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

4、时间戳

>>> time.mktime(time.strptime(s,'%Y-%m-%d %H:%M:%S'))
1450681288.0>>> int(time.time())# timestamp to time tuple in UTC
timestamp = 1226527167.595983
time_tuple = time.gmtime(timestamp)
print repr(time_tuple)# timestamp to time tuple in local time
timestamp = 1226527167.595983
time_tuple = time.localtime(timestamp)
print repr(time_tuple)

5、日期相加减

import datetimenow = datetime.datetime.now() # datetime.datetime(2015, 12, 16, 15, 6, 37, 420000)
dayOfweek = datetime.datetime.isoweekday(now)
if dayOfweek == 1: # Mondaylast_time = now + datetime.timedelta(days=-3)
else:last_time = now + datetime.timedelta(days=-1)

Random模块

import random
print random.random()
print random.randint(1,2)
print random.randrange(1,10)# 生成随机验证码
import random
checkcode = ''
for i in range(4):current = random.randrange(0,4)if current != i:temp = chr(random.randint(65,90))else:temp = random.randint(0,9)checkcode += str(temp)
print checkcode

OS模块

提供对操作系统进行调用的接口

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间

sys模块

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0)
sys.version        获取Python解释程序的版本信息
sys.maxint         最大的Int值
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]

JSON & Pickle模块

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

Shelve模块

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。

import shelved = shelve.open('shelve_test') #打开一个文件class Test(object):def __init__(self,n):self.n = nt = Test(123)
t2 = Test(123334)name = ["alex","rain","test"]
d["test"] = name #持久化列表
d["t1"] = t      #持久化类
d["t2"] = t2d.close()

logging模块

很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别,下面我们看一下怎么用。

最简单用法:

import logginglogging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')屏幕上打印:
WARNING:root:This is warning message

默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。

通过logging.basicConfig函数对日志的输出格式及方式做相关配置:

import logginglogging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b %Y %H:%M:%S',filename='myapp.log',filemode='w')logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')

logging.basicConfig函数各参数:

filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

将日志同时输出到文件和屏幕:

import logging#create logger
logger = logging.getLogger('TEST-LOG')
logger.setLevel(logging.DEBUG)# create console handler and set level to debug
ch = logging.StreamHandler()    # 打印到屏幕
ch.setLevel(logging.DEBUG)# create file handler and set level to warning
fh = logging.FileHandler("access.log")    # 打印到文件
fh.setLevel(logging.WARNING)
# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')# add formatter to ch and fh
ch.setFormatter(formatter)
fh.setFormatter(formatter)# add ch and fh to logger
logger.addHandler(ch)
logger.addHandler(fh)# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

re模块

常用正则表达式符号:

'.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
'$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
'*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
'+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
'?'     匹配前一个字符1次或0次
'{m}'   匹配前一个字符m次
'{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
'|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
'(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c'\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
'\Z'    匹配字符结尾,同$
'\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''(?P<name>...)' 分组匹配 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city") 结果{'province': '3714', 'city': '81', 'birthday': '1993'}最常用的匹配语法:
re.match 从头开始匹配
re.search 匹配包含
re.findall 把所有匹配到的字符放到以列表中的元素返回
re.splitall 以匹配到的字符当做列表分隔符
re.sub      匹配字符并替换

转载于:https://www.cnblogs.com/kirusx/p/6896547.html

Python-基础知识-常用模块相关推荐

  1. revit找不到附加模块程序集_TensorFlow基础知识——常用模块(一)

    1 本节简述 对于开展深度学习开发的目标而言,我们需要掌握的除了必要的深度学习理论基础.必要的开发依赖库基础知识.基本的开发套路之外,我们还需要掌握它常见的外围小帮手都有哪些.这些小帮手就是深度学习依 ...

  2. Python全栈开发之路 【第六篇】:Python基础之常用模块

    本节内容 模块分类:好处:标准库:help("modules") 查看所有python自带模块列表第三方开源模块:自定义模块:模块调用: import modulefrom os ...

  3. Python基础8—常用模块

    一.使用模块 1.使用前要导入模块,导入的语法为:import 模块名 2.使用模块中的函数语法为: 模块名.函数名(列表):使用模块中的变量语法为:模块名.变量 二.常用模块 1.sys ①获取当前 ...

  4. python基础知识专题 - 模块的打包和发布

    分发Python模块 jcLee95 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm=100 ...

  5. python基础之常用模块

    6.TEXT PROCESSING SERVICES :文本处理服务 6.1.re 8.DATA TYPES : 数据类型 8.1.datetime 8.2.collections 8.3.copy ...

  6. Python基础知识与常用数据类型

    Python基础知识与常用数据类型 目录 Python基础知识与常用数据类型 一.Python概述: 二.Python中的基础语法: 三.Python内置数据结构: 4.附录 一.Python概述: ...

  7. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

  8. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识

    原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...

  9. python的基础知识可以应用到哪方面-Python基础知识

    python基础 python的诞生 2002年,python 2.x 2008年,python 3.x python的命名 马戏团的名称 python简介 简单.易学 持快速开发. 跨平台. 开源. ...

  10. Python基础知识有哪些?你都知道吗

    Python基础知识有哪些?这几年,人工智能.数据分析等各行业的兴起,让更多人知道了Python,让Python是又火了一把.Python作为一个简介又实用的编程语言,让许多想从事信息技术行业的人准备 ...

最新文章

  1. iOs 自定义UIView 日历的实现 Swift2.1
  2. 关于React面试题汇总
  3. java版扫雷下载_Java 实现扫雷游戏(MineSweeper)
  4. boost::mpi模块all_reduce() 集合的测试
  5. IMPDP导入实例(oracle)
  6. CSS3总结(干货)
  7. 无类别地址CIDR概述
  8. android 模拟长按菜单键_如何采用PLC梯形图实现单键启动程序
  9. 关于车辆和车牌的检测相关文章
  10. Java抽奖抢购算法
  11. PX4模块设计之八:Ubuntu 20.04搭建FlightGear模拟器
  12. Java程序调用linux脚本-简单版
  13. PPT批量导入文字(Python实现)
  14. dorado java_[Java教程]dorado 7 使用总结
  15. 通过Chrome实时调试webview
  16. java创造新世界下载_创造新世界3D
  17. SSM项目_配置双数据源
  18. Vray 2.0 for 3dsmax 2008-2012中文版
  19. 在EXCEL中金额小写转换为大写
  20. 对接海关总署电子口岸时遇到清单加密问题的总结

热门文章

  1. 多浏览器 div 半透明
  2. SQL点滴24—监测表的变化(转载)
  3. 虚拟机 克隆:完整克隆 模式
  4. Json字符串转二维数组
  5. DS博客大作业--树
  6. Git 配置命令设置
  7. 【笔记】js Function类型 内部方法callee
  8. Android4.0 Design之UI设计易犯的错误1
  9. android 虚拟设备的用法
  10. 一个永远无法被初始化的指针: