目录

  • 模块介绍
  • time &datetime模块
  • random
  • json & picle

一、模块介绍

在我们日常的程序开发过程中,随着代码越写越多,在单个文件里的代码就会越来越长,越来越不容易维护。为了便于维护,把很多函数分组,分别放到不同的文件里。这样,每个文件包含的代码就相对少了很多。这就是一种很便利的代码组织方式。在Python中,每个.py文件就称之为一个模块。

模块又分为以下三种:

  • 自定义模块
  • 内置模块
  • 开源模块

1、自定义模块

  在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。
  比如handle.py,在该文件定义了函数home()
  那么在其他文件中就可以import handle,然后通过handle.home()来调用了,当然也可以通过from handle import home来引入。不过要注意层级问题!
  最后执行user_main.py,就会输出对应的home()的执行结果。

导入模块详解

主要有一下几种方法可以导入模块:

  • import module
  • from module.xx.xx import xx
  • from module.xx.xx import xx as rename
  • from module.xx.xx import *

其实导入模块就是告诉解释权去解释哪个py文件,但是导入模块时是根据sys.path的路径作为基准来进行的。
导入py文件,解释权解释该py文件;
导入包,解释权解释该包下的_init_.py文件

2、开源模块

安装:

自动安装

  • yum
  • pip
  • apt-get    (ubuntu)
  • easy_install

编译安装
    下载-》解压-》编译 Python setup.py build ->安装 python setup.py install

导入模块时使用import即可

3、内置模块

Python中,安装好了Python后,本身就带有的库,就叫做Python的内置的库。
内置模块,也被称为Python的标准库。比如很多常见的sys/os/re/json等等。

二、内置模块

1、time和datetime

关于date/datetime/time的区别

1,date是日期,通常就是日历上的年月日,比较大一点的时间单位。

2,time通常就是指秒钟数,即从1970年1月1日至今进过的秒钟数。或者指一天中的时分秒,比较小一点的时间单位。就像你问别人What's the time,别人会告诉你几点几分,而不会告诉你年月日。
    3,datetime就是年月日和时分秒,包含以上两者。

datetime 模块是用来处理日期时间的,通常是用来进行计算日期,可以很方便的使用加减运算。而time模块主要是用来处理秒钟时间的,当然这个秒钟数也可以转化成日 期,获取当前日期通常就是从这个模块获取的。不过说time时,有时候表示的也会很宽泛,因为它的词义就是时间嘛,这个不用太计较的。不过date的意义 是确定无疑的。    
time模块提供各种操作时间的函数。一般有两种表示时间的方式:

  • 时间戳
  • 以数组的形式,共有9个元素,分别表示用一个时间戳的struct_time会因为时区不同而不同。

year (four digits, e.g. 1998)
    month (1-12)
    day (1-31)
    hours (0-23)
    minutes (0-59)
    seconds (0-59)
    weekday (0-6, Monday is 0)
    Julian day (day in the year, 1-366)
    DST (Daylight Savings Time) flag (-1, 0 or 1) 是否是夏令时

asctime()        将当前时间转化成字符串
>>> time.asctime()
'Wed Feb 17 13:45:29 2016'
clock() 该函数有两个功能。在第一次调用的时候,返回的是程序运行的实际时间;第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔ctime() 将当前时间转换成一个时间字符串
>>> time.ctime()
'Wed Feb 17 13:49:38 2016'
gmtime() 将一个时间戳转换成UTC时区(0时区)struct_time >>> time.gmtime()
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=17, tm_hour=5, tm_min=51, tm_sec=15, tm_wday=2, tm_yday=48, tm_isdst=0)
localtime() 将一个时间戳转换为当前时区的struct_time >>> time.localtime()
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=17, tm_hour=13, tm_min=52, tm_sec=32, tm_wday=2, tm_yday=48, tm_isdst=0)
mktime() 将stuct_time转换为时间戳 >>> time.mktime(time.gmtime())
1455659784.0
strftime() 将指定的struct_time根据指定的格式化字符串输出 %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 当前时区的名称
%% %号本身
>>> t = (2016, 2, 17, 17, 3, 38, 1, 48, 0)
>>> t = time.mktime(t)
>>> time.strftime("%b %d %Y %H:%M:%S", time.gmtime(t))
'Feb 17 2016 09:03:38'
strptime(string[,format]) 将指定格式把一个时间字符串解析为时间元组 >>> struct_time = time.strptime("30 Nov 23", "%d %b %y")
>>> print(struct_time)
time.struct_time(tm_year=2023, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=334, tm_isdst=-1)
time() 返回当前时间的时间戳 >>> time.time()
1455689293.777393
sleep() 表示推迟指定时间运行,单位为秒 常用的几个函数总结 >>> print('处理器时间: %s'%time.clock())
处理器时间: 0.232888
>>> print('处理器时间: %s'%time.process_time())
处理器时间: 0.233331
>>> print('时间戳: %s'%time.time())
时间戳: 1455689340.538427
>>> print('当前系统时间: %s'%time.ctime())
当前系统时间: Wed Feb 17 14:09:00 2016
>>> print('昨天的现在时间: %s'%time.ctime(time.time()-86400))
昨天的现在时间: Tue Feb 16 14:09:00 2016
>>> print(time.gmtime(time.time()))
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=17, tm_hour=6, tm_min=9, tm_sec=1, tm_wday=2, tm_yday=48, tm_isdst=0)

datetime    是处理日期和时间的标准库。

datetime.datetime.now()    获取当前日期和时间,其类型是datetime

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2016, 2, 17, 14, 25, 20, 934740)
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2016, 2, 17, 14, 46, 57, 210727)
>>> print(now)
2016-02-17 14:46:57.210727
>>> print(now.timetuple())
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=17, tm_hour=14, tm_min=46, tm_sec=57, tm_wday=2, tm_yday=48, tm_isdst=-1) datetime.date.today() 获取当前日期 >>> print(datetime.date.today())
2016-02-17
datetime.date.fromtimestamp() 将时间戳转换成日期格式 >>> print(datetime.date.fromtimestamp(time.time()-86400) )
2016-02-16

2、random模块

该模块用于生成随机数。虽然有多种方法,但是最常用的还是random.randrange(start,stop,step)。下面具体介绍相关方法的使用:

random.random

    random.random()用于生成一个0到1的随机浮点数 0<=n<1.0

>>> import random
>>> random.random()
0.95179927622791
>>> random.random()
0.4513535438217471
random.uniform random.uniform(a,b)用于生成一个指定范围的随机浮点数 >>> random.uniform(1,10)
5.283284377758914
>>> random.uniform(1,10)
4.474916412178455
random.randint random.randint(a,b)用于生成一个指定范围的随机整数 >>> random.randint(1,10)
10
>>> random.randint(1,10)
9
random.randrange random.randrange(start,stop,step)用于生成一个指定访问,并且指定步长的随机整数 >>> random.randrange(1,100,3)
91
>>> random.randrange(1,100,3)
58
random.choice random.choice(seq)从序列中获取一个随机元素。参数seq表示一个有序类型,如list/tuple >>> random.choice('tom')
'o'
>>> random.choice('tom’)
't'
random.shuffle random.shuffle(x[,random]) 用于将一个列表中的元素打乱 >>> s1 = ['asd','sdd','ewqe’]
random.shuffle(s1)
>>> print(s1)
['ewqe', 'asd', 'sdd']
random.sample random.sample(seq,k) 表示从指定序列随机获取指定长度的片段,并不会修改原有序列 l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> s = random.sample(l1,3)
>>> print(s)
[1, 7, 4]
>>> print(l1)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

示例:生成带字母数字的验证码

checkcode = ''
for i in range(4):
current = random.randint(0,4)
if current != i:
tmp = chr(random.randint(65,90))
else:
tmp = random.randint(0,9)
checkcode += str(tmp)
print(checkcode)

3、OS模块

常用方法:

os.name    输出字符串指示正在使用的平台。windows 则是’nt’,对于Linux等,则为’posix’

os.getcwd()    获取当前的工作目录,即当前Python脚本工作的目录路径

os.listdir()    获取指定目录下所有文件和目录名

os.remove()    删除一个文件

os.system()    运行shell命令

os.linesep    字符串给出当前平台使用的行终止符

os.path.split()    返回一个路径的目录名和文件名

>>> os.path.split('/Users/jack/ssh.sh’)
('/Users/jack', 'ssh.sh')
os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。 >>> os.path.isdir(os.getcwd())
True
>>> os.path.isfile('ssh.sh’)
True
os.path.exists() 函数用来检验给出的路径是否真地存在 >>> os.path.exists('ssh.sh')
True
>>> os.path.exists('ssh.shs’)
False
os.path.abspath() 获取绝对路径 >>> os.path.abspath('ssh.sh’)
'/Users/jack/ssh.sh'
os.path.getsize() 获取文件的大小 >>> os.path.getsize('ssh.sh’)
316
os.path.dirname() 获取目录 >>> os.path.dirname('./Pictures/pic.tar.gz’)
'./Pictures'

四、json和pickle

pickle模块实现了基本的数据序列和饭反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久储存;通过pickle模块的反序列化操作,能够从文件中创建上一次程序保存的对象。

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

pickle.dump()序列化对象,并将结果数据流写入到文件对象中;

pickle.load(file)反序列化对象,将文件中的数据解析为一个Python对象。

Python 模块(五)的更多相关文章

  1. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  2. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

  3. 【转】python模块分析之unittest测试(五)

    [转]python模块分析之unittest测试(五) 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) p ...

  4. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  5. python 学习第五天,python模块

    一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...

  6. Python 第五篇(下):系统标准模块(shutil、logging、shelve、configparser、subprocess、xml、yaml、自定义模块)

    目录: shutil logging模块 shelve configparser subprocess xml处理 yaml处理 自定义模块 一,系统标准模块: 1.shutil:是一种高层次的文件操 ...

  7. 扩展Python模块系列(五)----异常和错误处理

    在上一节中,讨论了在用C语言扩展Python模块时,应该如何处理无处不在的引用计数问题.重点关注的是在实现一个C Python的函数时,对于一个PyObject对象,何时调用Py_INCREF和Py_ ...

  8. python 历险记(五)— python 中的模块

    目录 前言 基础 模块化程序设计 模块化有哪些好处? 什么是 python 中的模块? 引入模块有几种方式? 模块的查找顺序 模块中包含执行语句的情况 用 dir() 函数来窥探模块 python 的 ...

  9. python学习之模块-模块(五)

    5.10 包 5.10.1 包的概念 [官网解释] Packages are a way of structuring Python's module namespace by using " ...

随机推荐

  1. android LayoutInflater的使用

    看其继承关系: public abstract class LayoutInflater extends Object java.lang.Object ↳ android.view.LayoutIn ...

  2. Oracle Primavera P6 R84单机版安装教程

    本教程用于指导Oracle Primavera P6 R84版本的单机版安装过程.P6 R84版本于2014年9月30日发布.其功能较之前版本有较大提升.单机版的安装方式也发生了很大的变化.P6 R8 ...

  3. 帝国cms灵动标签下常用标签

    这里简单整理下灵动标签下的常用标签 标题名称:<?=$bqr['title']?>  <?=esub($bqr[title],22)?> 限制字符22个 标题链接:<?= ...

  4. bootstrap读书笔记

    引入bootstrap.js或单个插件的js文件 若引入单个插件的js文件,注意插件之间的依赖关系 data属性api data属性的api很方便,但我们也可以选择关闭这个功能:$(document) ...

  5. 二代USBKEY与一代USBKEY有什么区别?使用时需要注意什么?

    二代USBKEY相较于一代USBKEY产品,增加了屏幕以及按键功能:可通过二代USBKEY产品的屏幕查看交易或操作信息,通过按键的方式进行上翻.下翻.确认.取消等操作. 二代USBKEY产品采用Mic ...

  6. 用于COB工艺的PCB设计指导

    绑定角度尽量在45°之内,多于这个角度,绑定时候,银线不好打入焊盘.而且打入焊盘的尾部可能短路到相邻的焊盘,绑定焊盘之间的间距一般在4MIL为极限,半场的工艺一般就这样了.而且焊盘离被绑定的IC引脚最 ...

  7. android学习----overridePendingTransition

    1 Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出时的动画:另外一部分时第二个activity进入时 ...

  8. perl5 第十章 格式化输出

    第十章 格式化输出 by flamephoenix 一.定义打印格式二.显示打印格式三.在打印格式中显示值  1.通用的打印格式  2.格式和局域变量  3.选择值域格式  4.输出值域字符四.输出到 ...

  9. Android_Dialog_设置Dialog窗体的大小

    /** * 设置Dialog窗体的大小 */ private void setWindowSize() { DisplayMetrics dm = new DisplayMetrics(); Wind ...

  10. hdu5188 加限制的01背包问题

    http://acm.hdu.edu.cn/showproblem.php? pid=5188 Problem Description As one of the most powerful brus ...