python模块讲解_python常用模块详解(一)

一.简介

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

模块分为三种:

自定义模块

内置标准模块

开源模块(第三方)

自定义模块:

938878-20160518100414669-1277285070.png

模块导入

import module

from module.xx.xx import xx

from module.xx.xx import xx as rename

from module.xx.xx import *

938878-20160518100556763-1980014799.png

导入自定义模块时注意路径,查看库文件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() -- 延迟运行单位为sgmtime() -- 转换时间戳为时间元组(时间对象)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

举例

ExpandedBlockStart.gif

copycode.gif

#!/usr/bin/env python#-*- coding:utf-8 -*-

importtime

#返回当前时间戳

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)

copycode.gif

2.datetime模块

定义的类有: datetime.date    --表示日期的类。常用的属性有year, month, daydatetime.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对象

ExpandedBlockStart.gif

#根据给定的时间戮,返回一个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()    --返回给定时间的字符串格式

1

2

3

4

5

6

import datetime

from dateutil.relativedeltaimport relativedelta

# 获取当前时间的前一个月

datetime.datetime.now()- relativedelta(months=+1)

# 获取当天的前一个月

datetime.date.today()- relativedelta(months=+1)

ExpandedBlockStart.gif

copycode.gif

#取时间对象的年

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())

copycode.gif

time 类

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

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

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

time.resolution()  --微秒

ExpandedBlockStart.gif

copycode.gif

#最大时间

print(datetime.time.max)

#最小时间

print(datetime.time.min)

#时间最小单位,微秒

print(datetime.time.resolution)

copycode.gif

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()  --取给定日期时间的时间

ExpandedBlockStart.gif

copycode.gif

#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))

copycode.gif

3.sys模块

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

常用函数:

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

sys.path --模块搜索路径

sys.moudule --加载模块字典

sys.stdin  --标准输入

sys.stdout  --标准输出

sys.stderr  --错误输出

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

sys.version  --查看python版本

sys.maxsize  --最大的Int值

举例:

copycode.gif

#!/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

copycode.gif

ExpandedBlockStart.gif

copycode.gif

#!/usr/bin/env python#-*- coding:utf-8 -*-

importsys,os

dirname =sys.stdin.read()

os.mkdir(dirname.strip())

copycode.gif

copycode.gif

#sys.exit()系统返回值

>>> import sys

>>> sys.exit(0)

C:\>echo %ERRORLEVEL%

0

#windows查看系统返回值命令

echo %ERRORLEVEL%

#linux查看系统返回值命令

echo $?

copycode.gif

ExpandedBlockStart.gif

copycode.gif

>>> importsys

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

copycode.gif

ExpandedBlockStart.gif

copycode.gif

importsys,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)

copycode.gif

4.pickle模块

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

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

Functions: dump(object, file) dumps(object) -> string load(file) -> object loads(string) -> objectpickle.dumps(obj)--把任意对象序列化成一个str,然后,把这个str写入文件pickle.loads(string)  --反序列化出对象pickle.dump(obj,file)  --直接把对象序列化后写入文件pickle.load(file)  --从文件中反序列化出对象

copycode.gif

#!/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)

copycode.gif

copycode.gif

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()

copycode.gif

5.os模块

作用:

用于提供系统级别的操作

函数:

copycode.gif

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所指向的文件或者目录的最后修改时间

copycode.gif

6.hashlib模块

作用:

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

ExpandedBlockStart.gif

copycode.gif

importhashlib

######### 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())

copycode.gif

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

ExpandedBlockStart.gif

copycode.gif

importhashlib

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

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

hash.update(bytes('admin',encoding="utf-8"))

print(hash.hexdigest())

copycode.gif

7.random

作用:

生成随机变量

import random

print(random.random())

print(random.randint(1, 2))

print(random.randrange(1, 10))

copycode.gif

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

copycode.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值