目录

  • 模块介绍
  • 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. isinstance 和 issubclass

    一.isinstance Python 中的isinstance函数 isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数o ...

  2. [LeetCode]题解(python):076-Minimum Window Substring

    题目来源: https://leetcode.com/problems/minimum-window-substring/ 题意分析: 给定两个字符串S和T.在S中找到最短的一个子字符串使得他包括所有 ...

  3. DAO以及获取自动生成主键值

    package com.alibaba.sql; import java.lang.reflect.InvocationTargetException; import java.sql.Connect ...

  4. 驯服你的Windows Server 2003

    虽然通过一些技巧可以让Windows Server 2003更符合我们的使用习惯,但对我等菜鸟来说,操作还是有相当的难度,有没有更简单.更省事的驯服它的办法呢?有,那就是使用Windows Serve ...

  5. Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释

    @jsonignore的作用作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. http://www.cnblogs.com/toSeeMyDream/p/443 ...

  6. Python中type与Object的区别

    Python中type与Object的区别 在查看了Python的API后,总算明白了.现在总结如下: 先来看object的说明: Python中关于object的说明很少,甚至只有一句话: clas ...

  7. Java集合框架的知识总结

    说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于jav ...

  8. SPOJ LCS(Longest Common Substring-后缀自动机-结点的Parent包含关系)

    1811. Longest Common Substring Problem code: LCS A string is finite sequence of characters over a no ...

  9. 2014多校3 Wow! Such Sequence!段树

    主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=4893 这个问题还真是纠结啊--好久不写线段树的题了.由于这几天学伸展树.然后认为线段树小case了. ...

  10. HTML5 总结-表单-表单元素

    HTML5 表单元素 HTML5 的新的表单元素: HTML5 拥有若干涉及表单的元素和属性. 本章介绍以下新的表单元素: datalist keygen output 浏览器支持 Input typ ...