一.简介

  模块是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码

  模块分为三种:

  • 自定义模块
  • 内置标准模块
  • 开源模块(第三方)

自定义模块:

  

模块导入

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

导入自定义模块时注意路径,查看库文件sys.path,sys.path.append('路径')添加自定义路径

二.内置模块

time模块

time模块提供各种操作时间的函数

说明:一般有两种表示时间的方式:
       1.时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的
       2.以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同


The tuple items are:
year (including century, 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)
 
  • 函数
time() -- 返回时间戳
sleep() -- 延迟运行单位为s
gmtime() -- 转换时间戳为时间元组(时间对象)
localtime() -- 转换时间戳为本地时间对象
asctime() -- 将时间对象转换为字符串
ctime() -- 将时间戳转换为字符串
mktime() -- 将本地时间转换为时间戳
strftime() -- 将时间对象转换为规范性字符串
常用的格式代码:

%Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale's abbreviated weekday name.
%A Locale's full weekday name.
%b Locale's abbreviated month name.
%B Locale's full month name.
%c Locale's appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale's equivalent of either AM or PM.

strptime() -- 将时间字符串根据指定的格式化符转换成数组形式的时间
常用格式代码:
同strftime
  • 举例
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time #返回当前时间戳
print(time.time())
#返回当前时间
print(time.ctime())
#将时间戳转换为字符串
print(time.ctime(time.time()-86640))
#本地时间
print(time.localtime(time.time()-86400))
#与time.localtime()功能相反,将struct_time格式转回成时间戳格式
print(time.mktime(time.localtime()))
#将struct_time格式转成指定的字符串格式
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))
#将字符串格式转换成struct_time格式
print(time.strptime("2016-01-28","%Y-%m-%d"))
#休眠5s
time.sleep(5)

2.datetime模块

定义的类有: 
datetime.date    --表示日期的类。常用的属性有year, month, day
datetime.time    --表示时间的类。常用的属性有hour, minute, second, microsecond

datetime.datetime  --表示日期时间
datetime.timedelta   --表示时间间隔,即两个时间点之间的长度

  • date类

date类表示日期,构造函数如下 :

datetime.date(year, month, day);

year (1-9999)

month (1-12)

day (1-31)

date.today()  --返回一个表示当前本地日期的date对象

date.fromtimestamp(timestamp) --根据给定的时间戮,返回一个date对象

#根据给定的时间戮,返回一个date对象
print(datetime.date.fromtimestamp(time.time()))
#返回一个表示当前本地日期的date对象
print(datetime.datetime.today())

    date.year()   --取给定时间的年

    date.month()  --取时间对象的月

    date.day()  --取给定时间的日

date.replace()  --生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性

date.timetuple()  --返回日期对应的time.struct_time对象

date.weekday()  --返回weekday,Monday == 0 ... Sunday == 6

date.isoweekday() --返回weekday,Monday == 1 ... Sunday == 7

date.ctime()    --返回给定时间的字符串格式

import datetime
from dateutil.relativedelta import relativedelta
# 获取当前时间的前一个月
datetime.datetime.now() - relativedelta(months=+1)
# 获取当天的前一个月
datetime.date.today() - relativedelta(months=+1) 
#取时间对象的年
print(datetime.date.today().year)
#取时间对象的月
print(datetime.date.today().month)
#取时间对象的日
print(datetime.date.today().day)
#生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性
print(datetime.date.today().replace(2010,6,12))
#返回给定时间的时间元组/对象
print(datetime.date.today().timetuple())
#返回weekday,从0开始
print(datetime.date.today().weekday())
#返回weekday,从1开始
print(datetime.date.today().isoweekday())
#返回给定时间的字符串格式
print(datetime.date.today().ctime())
  • time 类

time类表示时间,由时、分、秒以及微秒组成

time.min()  --最小表示时间

time.max()  --最大表示时间

time.resolution()  --微秒

#最大时间
print(datetime.time.max)
#最小时间
print(datetime.time.min)
#时间最小单位,微秒
print(datetime.time.resolution)
  • datetime类

datetime是date与time的结合体,包括date与time的所有信息

datetime.max()  --最大值

datetime.min()  --最小值

datetime.resolution() --datetime最小单位

datetime.today()  --返回一个表示当前本地时间

datetime.fromtimestamp()  --根据给定的时间戮,返回一个datetime对象

datetime.year()  --取年

datetime.month()  --取月

datetime.day()  --取日期

datetime.replace()  --替换时间

datetime.strptime()  --将字符串转换成日期格式

datetime.time()  --取给定日期时间的时间  

#datetime最大值
print(datetime.datetime.max)
#datetime最小值
print(datetime.datetime.min)
#datetime最小单位
print(datetime.datetime.resolution)
#返回一个表示当前本地时间
print(datetime.datetime.today())
#根据给定的时间戮,返回一个datetime对象
print(datetime.datetime.fromtimestamp(time.time()))
#取时间对象的年
print(datetime.datetime.now().year)
#取时间对象的月
print(datetime.datetime.now().month)
#取时间对象的日
print(datetime.datetime.now().day)
#生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性
print(datetime.datetime.now().replace(2010,6,12))
#返回给定时间的时间元组/对象
print(datetime.datetime.now().timetuple())
#返回weekday,从0开始
print(datetime.datetime.now().weekday())
#返回weekday,从1开始
print(datetime.datetime.now().isoweekday())
#返回给定时间的字符串格式
print(datetime.datetime.now().ctime())
#将字符串转换成日期格式
print(datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M"))
#取给定日期时间的时间
print(datetime.datetime.now().time())
#获取5日前时间
print(datetime.datetime.now() + datetime.timedelta(days=-5))

3.sys模块

用于提供对解释器相关的访问及维护,并有很强的交互功能

常用函数:

sys.argv --传参,第一个参数为脚本名称即argv[0]

sys.path --模块搜索路径

sys.moudule --加载模块字典

sys.stdin  --标准输入

sys.stdout  --标准输出

sys.stderr  --错误输出

sys.platform --返回系统平台名称

sys.version  --查看python版本

sys.maxsize  --最大的Int值

举例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#传参
import sys print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2]) ##运行
python argv.py argv0 argv1
argv.py
argv0
argv1
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys,os dirname = sys.stdin.read()
os.mkdir(dirname.strip())
#sys.exit()系统返回值 

>>> import sys
>>> sys.exit(0) C:\>echo %ERRORLEVEL%
0 #windows查看系统返回值命令
echo %ERRORLEVEL%
#linux查看系统返回值命令
echo $?
>>> import sys
>>> sys.platform
'win32'
>>> sys.version
'3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)]' >>> sys.maxsize
9223372036854775807
import sys,time
for i in range(100):
sys.stdout.write('r')
sys.stdout.write('%s%% |%s' % (int(i/100*100),int(i/100*100) * '*'))
sys.stdout.flush
time.sleep(0.2)

4.pickle模块

  pickle,用于python特有的类型 和 python的数据类型间进行转换

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

Functions:

    dump(object, file)
dumps(object) -> string
load(file) -> object
loads(string) -> object pickle.dumps(obj)--把任意对象序列化成一个str,然后,把这个str写入文件
pickle.loads(string)  --反序列化出对象
pickle.dump(obj,file)  --直接把对象序列化后写入文件
pickle.load(file)  --从文件中反序列化出对象
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pickle
accounts = {
1000: {
'name':'USERA',
'email': 'lijie3721@126.com',
'passwd': 'abc123',
'balance': 15000,
'phone': 13651054608,
'bank_acc':{
'ICBC':14324234,
'CBC' : 235234,
'ABC' : 35235423
}
},
1001: {
'name': 'USERB',
'email': 'caixin@126.com',
'passwd': 'abc145323',
'balance': -15000,
'phone': 1345635345,
'bank_acc': {
'ICBC': 4334343,
}
},
}
#把字典类型写入到文件中
f = open('accounts.db','wb')
f.write(pickle.dumps(accounts))
f.close() #2,反序列出对象并修改其内容,并将修改内容重新写入文件
file_name = "accounts.db"
f = open(file_name,'rb')
account_dic = pickle.loads(f.read())
f.close() account_dic[1000]['balance'] -= 500
f = open(file_name,'wb')
f.write(pickle.dumps(account_dic))
f.close() #3,反序列化对象并查看其内容 f = open('accounts.db','rb')
acountdb = pickle.loads(f.read())
print(acountdb)
dic = {
'k1': [1,2],
'k2': [3,4]
}
#1.将对象写入文件
f = open('test','wb')
pickle.dump(dic,f)
f.close()
#2.将文件中内容反序列化,并读出
f = open('test','rb')
dic2 = pickle.load(f)
print(dic2)
f.close()

5.os模块

作用:

  用于提供系统级别的操作

函数: 

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

6.hashlib模块

  作用:

  用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 

import hashlib

# ######## md5 ########
hash = hashlib.md5()
# help(hash.update)
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest())
print(hash.digest()) ######## sha1 ######## hash = hashlib.sha1()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha256 ######## hash = hashlib.sha256()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha384 ######## hash = hashlib.sha384()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha512 ######## hash = hashlib.sha512()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest())

  加密算法缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密

import hashlib

# ######## md5 ########

hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8"))
hash.update(bytes('admin',encoding="utf-8"))
print(hash.hexdigest())

  7.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

python常用模块详解(一)的更多相关文章

  1. python常用模块详解

    python常用模块详解 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用p ...

  2. python常用模块详解2

    序列化模块补充: 1.json格式的限制,json格式的key必须是字符串数据类型 2.json格式的字符串必须是"" 如果数字是key,那么dump之后会强转成字符串数据类型 i ...

  3. Python Fabric模块详解

    Python Fabric模块详解 什么是Fabric? 简单介绍一下: ​ Fabric是一个Python的库和命令行工具,用来提高基于SSH的应用部署和系统管理效率. 再具体点介绍一下,Fabri ...

  4. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明  一.简介 ...

  5. Ansible安装部署及常用模块详解

    Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...

  6. python docopt模块详解

    python docopt模块详解 docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用 """ ""&q ...

  7. (转)python collections模块详解

    python collections模块详解 原文:http://www.cnblogs.com/dahu-daqing/p/7040490.html 1.模块简介 collections包含了一些特 ...

  8. python pathlib模块详解

    python pathlib模块详解    

  9. python time 模块详解

    Python中time模块详解 发表于2011年5月5日 12:58 a.m.    位于分类我爱Python 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括: ...

随机推荐

  1. 欧拉回路/通路 Codeforces Round #288 (Div. 2)

    http://codeforces.com/contest/508/problem/D 以上是题目链接 题目大意 给n个字符串看能不能链接在一起 因为 三个三个分割 所以字符串 如abc ab作为起点 ...

  2. 用”人话”解释CNN —— 对单个特征图进行视觉化

    转载自:http://nooverfit.com/wp/pycon-2016-tensorflow-研讨会总结-tensorflow-手把手入门-用人话解释cnn 首先什么是CNN? 其实, 用”人话 ...

  3. Catalan 数

    概要 在一些面试的智力题中会遇到此数的变形,如果完全不了解,直接想结果是很困难的,故在此简单介绍一下.   基本定义 Catalan 数的定义根据不同的应用环境有很多不同的定义方式,下面给出一个.   ...

  4. laravel中文字模型的增删改查

    模型是用ORM 来做, 使用类来表示一个表,每个表都对应一个模型,以供上层使用 创建模型在项目中的位置定位: /app/下面 好了,我们来创建一个模型: php artisan make:model ...

  5. python爬虫(爬取段子)

    python爬取段子 爬取某个网页的段子 第一步 不管三七二十一我们先导入模块 #http://baijiahao.baidu.com/s?id=1598724756013298998&wfr ...

  6. 剑指Offer(书):对称的二叉树

    题目:请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. boolean isSymmetrical(TreeNode pRoot) { r ...

  7. grep理解

    http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html部分摘录于此 grep与正规表达式  字符类 字符类的搜索:如果我想要搜 ...

  8. LeetCode(153) Find Minimum in Rotated Sorted Array

    题目 Total Accepted: 65121 Total Submissions: 190974 Difficulty: Medium Suppose a sorted array is rota ...

  9. 基础训练 Sine之舞

    Sine之舞 #include<iostream> #include<vector> #include<string.h> using namespace std; ...

  10. js 百度云搜索框

    // ==UserScript==// @name 百度云插件+APIKey// @namespace // @version 5.0.2.1// @description 在百度云网盘的页面添加一个 ...