模块是python非常重要并常用的,这里对基本用法和常用模块做下简要记录
一、模块定义
模块(module):是逻辑上组织python代码的.py结尾的Python文件,代码中可以包含变量、函数、类,总体是为了实现一个功能。
包(package):是一个组织python文件的一个目录(必须含有一个__init__.py的文件,用以初始化包内容,所有导入包里所有方法,需要在__init__.py中导入相关方法)
二、模块使用方法
import module_name
import module_name01,module_name02
from module_name import *
from module_name import fun01,fun02
from module_name import fun01 as fun
import和from ... import ...的主要区别如下:
import:相当于当前文件引用其他文件的内容,在调用导入模块时,需要调用导入方法,语法必须为modue.fun()带有导入模块名
from ... import ...:相当于导入模块的所有代码直接粘贴到当前py文件,在调用时不需要包含模块名,而且可以单独导入模块中的部分方法、变量等,但存可能会导致导入的代码和当前代码存在变量、方法等冲突问题,慎用
包导入:import package_name
导入包其实就是其执行package_name包下面的__init__.py文件
三、import本质(路径搜索和搜索路径)
import 模块的本质是将python文件解释一遍,具体流程如下:
import module_name——>module_name.py——>python路径查找module_name.py文件(默认当前路径先查找)——>解释module_name.py或者出错
#查看当前python文件搜索路径
import sys
print(sys.path)
#导入其他路径的python模块
四、模块分类
1.标准库(python自带的)
时间模块:(time、datetime)
##time模块使用方法(格式化字符串形式、元组形式、时间戳形式)
import time
##格式化字符串时间格式2017-07-30 11:10:57
print(time.strftime("%Y-%m-%d %X"))
2017-07-30 10:00:24
##时间戳时间格式(1970+time.time()即是当前时间)
print(time.time())
1501377801.9864273
##元组时间格式()
print(time.localtime())
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=30, tm_hour=9, tm_min=25, tm_sec=4, tm_wday=6, tm_yday=211, tm_isdst=0)
time.timezone:标准时间-当前时区值,北京显示为-28800秒
time.time():
time.sleep():
##时间戳转化为元组形式
time.gmtime():将秒转化为UTC的元组形式 ,返回的是标准时间即0时区的当前时间
time.localtime():将秒转为为UTC元组形式,显示当前时间,参数值是秒,默认当前时间
##元组转化为时间戳形式
time.mktime() :将元组形式数据转化为时间戳形式(秒),传入的变量值是元组
##元组转化为格式化的字符串时间形式
time.strftime():将元组形式的时间,转化为格式化的字符串形式
x=time.localtime()
print(time.strftime('%Y-%m-%d %X',x))
##字符串时间格式转为元组时间格式
time.strptime():将字符串时间格式转化为元组形式时间格式
x=time.strftime("%Y-%m-%d %X")
print(time.strptime(x,"%Y-%m-%d %X"))
时间格式:
%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.
常用获取当前时间:
time.strftime("%Y-%m-%d %X")
time.localtime()
time.time()
##datetime模块用法
str(datetime.now()+timedelta(3))
'2017-08-04 16:49:51.377186'
str(datetime.now()+timedelta(hours=-3))
'2017-08-01 13:50:51.167165'
str(datetime.now()+timedelta(minutes=+3))
'2017-08-01 18:30:37.745793'
random模块:
##随机取(0-1)之间的数值
>>> random.random()
0.9151227988883402
##随机取[m-n]之间的整数
>>> random.randint(1,3)
3
##随机取[m-n)之间的整数
>>> random.randrange(5)
1
##随机取一个字符或列表数值
>>> random.choice('chinese')
's'
>>> random.choice([1,5,'abc'])
1
##从字符串中随机取出N个字符
>>> random.sample('hello',2)
['h', 'l']
##从区间(m,n)中取浮点数
>>> random.uniform(3,10)
7.797497264321265
##让有序列表变无序
>>> l=[1,2,3,4,5]
>>> random.shuffle(l)
>>> l
[2, 4, 1, 5, 3]
案例:生成随机验证码
##大写字母ascii:65-90,小写字母:97-122
OS模块:
os.getcwd() ##获取当前目录
os.chdir('/home/oracle') ##切换路径,前面加r使转移失效,使用\转移
os.chdir(r"c:\users")
os.chdir("c:\\users")
os.curdir ##显示当前目录
'.'
os.pardir ##显示父目录
'..'
os.makedirs('/home/tools/a/b') ##递归创建目录
os.removedirs('/home/tools/a/b') ##递归删除目录,如果目录为空则删除并递归到上层目录,如果还未空则继续删除
os.mkdir('/home/tools/a') ##建立目录,不能递归创建
os.rmdir('/home/tools/a') ##删除目录,不能递归删除
os.listdir('/') ##列出目录内容
os.stat('./.bash_profile') ##显示属性
os.rename('aa','bb') ##将文件名aa更改为bb
os.linesep ##显示平台使用行终止符号win \r\n linux \n
'\n'
os.sep ##输出操作系统特定的路径分隔符win \ linux /
'/'
os.name ##输出字符只是当前使用平台win:nt linux:posix
'posix'
os.pathsep ##输出用于分隔文件路径的字符串windows: ; linux: :
':'
os.environ ##输出环境变量
os.system('cmd') ##执行系统命令,具体命令需要引号括起来,例如os.system('date')
os.path.abspath('abc') ##获取文件abc的绝对路径
os.path.split('/home/tools/package.zip')##分隔文件名、路径,结果为('/home/tools', 'package.zip')
os.path.dirname('/home/tools') ##获取目录名称,最后一个路径分隔符前的内容
'/home'
os.path.basename('/home/tools') ##获取文件名称,最后一个路径分隔符后的内容
'tools'
os.path.exists('/home/tools/') ##判断文件、路径是否存在,返回值为True、False
True
os.path.isabs('/home') ##判断是否是绝对路径
os.path.isfile('/home/package.zip') ##判断是否是文件
True
os.path.isdir('/home') ##判断是否为路径
True
os.path.join('/home','a','b') ##将多个路径组合返回
'/home/a/b'
os.path.getatime('/home') ##获取文件、路径的访问时间、执行时间
1502700846.897154
os.path.getctime('/home') ##获取文件、路径的属性修改时间
1497491543.3123677
os.path.getmtime('/home') ##后去文件、路径的内容修改时间
sys模块:
sys.argv ##接收输入变量参数值,列表形式,列表第一个值是文件本身
python argv.py 111 222
['argv.py', '111', '222']
sys.exit(n) ##正常退出程序
sys.version ##输出python程序版本信息
sys.maxint ##输出最大int值
sys.path ##输出python系统环境变量
sys.platform ##输出操作系统平台
sys.stdout.write("hello \n") ##系统标准输出
hi=sys.stdin.readline()[:-1] ##接收系统标准输入,不提示;而raw_input(""),提示标准输入
>>> hi=sys.stdin.readline()[:-1]
hello
>>> print(hi)
hello
>>> he=raw_input("INPUT:")
INPUT:hello
>>> print(he)
hello
shutil模块:
2.第三方模块(开源的)
3.自定义模块(自己定义开发的)
一、模块定义
模块(module):是逻辑上组织python代码的.py结尾的Python文件,代码中可以包含变量、函数、类,总体是为了实现一个功能。
包(package):是一个组织python文件的一个目录(必须含有一个__init__.py的文件,用以初始化包内容,所有导入包里所有方法,需要在__init__.py中导入相关方法)
二、模块使用方法
import module_name
import module_name01,module_name02
from module_name import *
from module_name import fun01,fun02
from module_name import fun01 as fun
import和from ... import ...的主要区别如下:
import:相当于当前文件引用其他文件的内容,在调用导入模块时,需要调用导入方法,语法必须为modue.fun()带有导入模块名
from ... import ...:相当于导入模块的所有代码直接粘贴到当前py文件,在调用时不需要包含模块名,而且可以单独导入模块中的部分方法、变量等,但存可能会导致导入的代码和当前代码存在变量、方法等冲突问题,慎用
包导入:import package_name
导入包其实就是其执行package_name包下面的__init__.py文件
三、import本质(路径搜索和搜索路径)
import 模块的本质是将python文件解释一遍,具体流程如下:
import module_name——>module_name.py——>python路径查找module_name.py文件(默认当前路径先查找)——>解释module_name.py或者出错
#查看当前python文件搜索路径
import sys
print(sys.path)
#导入其他路径的python模块
- import sys
- import os
- p01=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))+os.sep+"Day01"
- print(p01)
- sys.path.append(p01)
- print(sys.path)
- import HelloWorld
1.标准库(python自带的)
时间模块:(time、datetime)
##time模块使用方法(格式化字符串形式、元组形式、时间戳形式)
import time
##格式化字符串时间格式2017-07-30 11:10:57
print(time.strftime("%Y-%m-%d %X"))
2017-07-30 10:00:24
##时间戳时间格式(1970+time.time()即是当前时间)
print(time.time())
1501377801.9864273
##元组时间格式()
print(time.localtime())
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=30, tm_hour=9, tm_min=25, tm_sec=4, tm_wday=6, tm_yday=211, tm_isdst=0)
time.timezone:标准时间-当前时区值,北京显示为-28800秒
time.time():
time.sleep():
##时间戳转化为元组形式
time.gmtime():将秒转化为UTC的元组形式 ,返回的是标准时间即0时区的当前时间
time.localtime():将秒转为为UTC元组形式,显示当前时间,参数值是秒,默认当前时间
##元组转化为时间戳形式
time.mktime() :将元组形式数据转化为时间戳形式(秒),传入的变量值是元组
##元组转化为格式化的字符串时间形式
time.strftime():将元组形式的时间,转化为格式化的字符串形式
x=time.localtime()
print(time.strftime('%Y-%m-%d %X',x))
##字符串时间格式转为元组时间格式
time.strptime():将字符串时间格式转化为元组形式时间格式
x=time.strftime("%Y-%m-%d %X")
print(time.strptime(x,"%Y-%m-%d %X"))
时间格式:
%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.
常用获取当前时间:
time.strftime("%Y-%m-%d %X")
time.localtime()
time.time()
##datetime模块用法
str(datetime.now()+timedelta(3))
'2017-08-04 16:49:51.377186'
str(datetime.now()+timedelta(hours=-3))
'2017-08-01 13:50:51.167165'
str(datetime.now()+timedelta(minutes=+3))
'2017-08-01 18:30:37.745793'
random模块:
##随机取(0-1)之间的数值
>>> random.random()
0.9151227988883402
##随机取[m-n]之间的整数
>>> random.randint(1,3)
3
##随机取[m-n)之间的整数
>>> random.randrange(5)
1
##随机取一个字符或列表数值
>>> random.choice('chinese')
's'
>>> random.choice([1,5,'abc'])
1
##从字符串中随机取出N个字符
>>> random.sample('hello',2)
['h', 'l']
##从区间(m,n)中取浮点数
>>> random.uniform(3,10)
7.797497264321265
##让有序列表变无序
>>> l=[1,2,3,4,5]
>>> random.shuffle(l)
>>> l
[2, 4, 1, 5, 3]
案例:生成随机验证码
- #!/usr/bin/env python
- # -*- UTF-8 -*-
- import random
-
- check_code=''
-
- for i in range(4):
- num=random.randrange(0,4)
- if num==i:
- code=chr(random.randint(65,90))
- else:
- code=random.randint(1,9)
- check_code+=str(code)
-
- print(check_code)
OS模块:
os.getcwd() ##获取当前目录
os.chdir('/home/oracle') ##切换路径,前面加r使转移失效,使用\转移
os.chdir(r"c:\users")
os.chdir("c:\\users")
os.curdir ##显示当前目录
'.'
os.pardir ##显示父目录
'..'
os.makedirs('/home/tools/a/b') ##递归创建目录
os.removedirs('/home/tools/a/b') ##递归删除目录,如果目录为空则删除并递归到上层目录,如果还未空则继续删除
os.mkdir('/home/tools/a') ##建立目录,不能递归创建
os.rmdir('/home/tools/a') ##删除目录,不能递归删除
os.listdir('/') ##列出目录内容
os.stat('./.bash_profile') ##显示属性
os.rename('aa','bb') ##将文件名aa更改为bb
os.linesep ##显示平台使用行终止符号win \r\n linux \n
'\n'
os.sep ##输出操作系统特定的路径分隔符win \ linux /
'/'
os.name ##输出字符只是当前使用平台win:nt linux:posix
'posix'
os.pathsep ##输出用于分隔文件路径的字符串windows: ; linux: :
':'
os.environ ##输出环境变量
os.system('cmd') ##执行系统命令,具体命令需要引号括起来,例如os.system('date')
os.path.abspath('abc') ##获取文件abc的绝对路径
os.path.split('/home/tools/package.zip')##分隔文件名、路径,结果为('/home/tools', 'package.zip')
os.path.dirname('/home/tools') ##获取目录名称,最后一个路径分隔符前的内容
'/home'
os.path.basename('/home/tools') ##获取文件名称,最后一个路径分隔符后的内容
'tools'
os.path.exists('/home/tools/') ##判断文件、路径是否存在,返回值为True、False
True
os.path.isabs('/home') ##判断是否是绝对路径
os.path.isfile('/home/package.zip') ##判断是否是文件
True
os.path.isdir('/home') ##判断是否为路径
True
os.path.join('/home','a','b') ##将多个路径组合返回
'/home/a/b'
os.path.getatime('/home') ##获取文件、路径的访问时间、执行时间
1502700846.897154
os.path.getctime('/home') ##获取文件、路径的属性修改时间
1497491543.3123677
os.path.getmtime('/home') ##后去文件、路径的内容修改时间
sys模块:
sys.argv ##接收输入变量参数值,列表形式,列表第一个值是文件本身
python argv.py 111 222
['argv.py', '111', '222']
sys.exit(n) ##正常退出程序
sys.version ##输出python程序版本信息
sys.maxint ##输出最大int值
sys.path ##输出python系统环境变量
sys.platform ##输出操作系统平台
sys.stdout.write("hello \n") ##系统标准输出
hi=sys.stdin.readline()[:-1] ##接收系统标准输入,不提示;而raw_input(""),提示标准输入
>>> hi=sys.stdin.readline()[:-1]
hello
>>> print(hi)
hello
>>> he=raw_input("INPUT:")
INPUT:hello
>>> print(he)
hello
shutil模块:
2.第三方模块(开源的)
3.自定义模块(自己定义开发的)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27067062/viewspace-2142786/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27067062/viewspace-2142786/