《Python学习之路 -- Python基础之模块与包》

  与其他脚本语言相似,在Python中也有模块和包的概念,在JavaScript中,一个js文件就是一个模块,有package.json文件的目录就是包;相似的,在Python中,通俗的说,一个py文件就是一个模块,拥有__init__.py的目录就是一个包,更准确的说,一个包可以包含多个模块,也就是说,多个模块组成了一个包。模块又可以分为:内置模块(标准库)、第三方模块和自定义模块。

  一个模块可以包含可执行的语句和函数的定义,这些语句的目的就是初始化模块,它们在该模块首次被导入时执行。导入模块有两种方式:import  和    from ...  import ...   (可以使用as关键字对模块进行重命名)

导入注意事项:

1、不管使用哪种方式导入模块,被导入的模块所有语句都会执行

2、可以在程序的任意位置导入模块,但是需要注意命名空间的问题,首次导入时,解释器会为模块创建新的命名空间,但如果在同一个py文件的其他地方重复导入相同的模块,则会继续使用已经开辟的内存空间,而不是开辟新的内存。

3、模块的查找顺序: 内存中已经加载的模块 ——  内置模块  ——  sys.path路径中包含的模块

4、当执行一个脚本(py文件)时,解释器会将这个文件所在的目录加到sys.path路径中

 

 

1、time 模块

①时间戳

import time
# 时间戳:从1970年1月1日0时到当前的时间,单位:秒
time.time()

 

 ②结构化时间

import time
# t是当前的时间对象
t = time.localtime()
# 时间对象里面包含了当前的时间属性,比如:
# 当前的年份  tm_year 
# 当前的月份  tm_mon
# 当前的日期  tm_mday
# 当前的整点  tm_hour
# 当前的分钟  tm_min
# 当前的秒数  tm_sec
# 当前是星期几,0表示星期一  tm_wday
# 当天是今年的的多少天  tm_yday

 除了localtime之外,还可以通过 time.gmtime()获取UTC标准时间

 

内置字符串时间

# 参数默认为当前的格式化时间
time.asctime()
# 参数默认为当前的时间戳时间
time.ctime()
# 默认情况下两个方法返回的结果一致

 

将结构化时间转为时间戳

import time
# time.mktime(格式化时间)
time.mktime(time.localtime())

 

将结构化时间转为字符串时间

import time
# time.strftime(字符串格式化,格式化时间)
time.strftime('%Y-%m-%d %X',time.localtime())
# 字符串格式化中,%Y表示年份,%m表示月份,%d表示天,%X表示时分秒,它们之间的分隔符可以自定义

 

将字符串时间转为结构化时间

import time
# time.strptime(字符串时间,格式化时间)
time.strptime(‘2018-5-4 13:49:36’,‘%Y-%m-%d %X’)

 

③延迟执行

import time
# time.sleep(延迟的秒数)
time.sleep(1)

 

 

2、random 模块

import random
# 生成一个0到1的随机浮点数
random.random()
# 生成一个1到10(包括1和10)的随机整数
random.randint(1,10)
# 生成一个1到10(不包括10)的随机整数
random.randrange(1,10)
# 随机选取一个可转为可迭代对象中的数据
random.choice([11,22,33])
# 随机选取一个或多个可转为可迭代对象中的数据
random.sample([11,22,33,44],2)    # 2表示选取两个
# 随机选取一个指定范围中的浮点数
random.uniform(1,3)
# 打乱一个集合中数据的次序
random.shuffle([2,3,5,1,4])

 

 

3、os 模块

import os
# 获取当前python脚本的目录
os.getcwd()
# 改变当前工作目录,相当于shell里面的cd
os.chdir()
# 生成多层递归目录
os.makedirs('dirname1/dirname2')
# 递归删除目录,若目录为空,则删除,并递归到上一级目录,如果也是空,则继续删除
os.removedirs('dirname')
# 创建一个目录
os.mkdir('dirname')
# 删除单据空目录,如果目录不为空则无法删除
os.rmdir('dirname')
# 列出指定目录下的所有文件和子目录,包括隐藏文件
os.listdir(path)
# 删除一个文件
os.remove(path)
# 重命名文件或目录
os.rename()
# 读取文件的状态,包括文件的大小,创建时间,修改时间,上次访问时间等信息
os.stat(path)
# 输出操作系统特定的路径分隔符,windows下为\\,linux下为/
os.sep()
# 输出当前平台使用的行终止符,windows下为\r\n,linux下为\n
os.linesep()
# 输出用于分隔文件路径的字符串,windows下为分号; , linux下为冒号:
os.pathsep()
# 获取系统环境变量
os.environ()
# 将path分隔成目录和文件名二元组返回
os.path.split(path)
# 返回path目录
os.path.dirname(path)
# 返回path最后的文件名
os.path.basename(path)
# 将多个路径组合并返回
os.path.join(path1,path2)
# 返回path所指向的文件或目录的最后存取时间
os.path.getatime(path)
# 返回path所指向的文件或目录的最后修改时间
os.path.getmtime(path)

 

 

4、sys 模块

import sys
# 返回模块搜索路径
sys.path()
# 返回操作哦系统平台名称
sys.platform()
# 退出程序
sys.exit()
# 获取Python解释器的版本信息
sys.version()
# 列出所有参数
sys.agrv()
# 立即刷新
sys.stdout.flush()
#向终端写入内容
sys.stdout.write(str)

 

 

5、json 模块

import json
# 将其他数据类型转为json字符串
json.dumps()
# 将json字符串转为其他数据类型
json.loads()

 

 

6、pickle 模块

import pickle
# 将其他数据类型转为对应的字节
pickle.dumps()
# 将字节转为其他数据类型
pickle.loads()

 

 

7、xml 模块

import xml.etree.ElementTree as ET
# 读取xml文件,返回文件对象
tree = ET.parse('xxxx.xml')
# 获取xml中的根标签,可遍历
root = tree.getroot()
for i in root:
    # 获取标签名
    print(i.tag)
    # 获取标签属性,返回一个字典
    print(i.attrib)
    # 获取标签体
    print(i.text)

 

 

8、re 模块

常用匹配模式:
\w   匹配字母、数字以及下划线
\W   匹配非字母数字下划线
\s   匹配任意空白字符
\S   匹配任意非空白字符
\d   匹配任意数字
\D   匹配任意非数字字符
\A   匹配字符串开始
\Z   匹配字符串结束
\G   匹配最后匹配完成的位置
\n   匹配一个换行符
\t   匹配一个制表符
^    匹配字符串开头
$    匹配字符串结尾
.    匹配一个任意字符,换行符除外
[abc]   表示一组字符,匹配a或b或c
[^abc]  匹配除了a,b,c之外的字符
*    匹配0个或多个表达式
+    匹配1个或多个表达式
?   匹配0个或1个前面的字符
{n}   精确匹配n个前面的表达式
{n,m}   匹配n到m次由前面的正则表达式定义的片段
a | b   匹配a或b
()      匹配括号内的表达式
[a-z] 匹配所有小写字母
[A-Z] 匹配所有大写字母
[a-Z]  匹配所有字母
[0-9] 匹配数字
\ 转义字符

 

 注意:在字符集[ ]中没有特殊符号,除了 ‘-’ ,‘/’  和 ‘\’

 

import re
# 根据正则表达式reg匹配目标字符串target,结果返回一个列表
re.findall(reg,target)
# 只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
re.search(reg,target)

 

 

 9、logging 模块

import logging
# 默认级别是warning,默认打印到终端上
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
# 通过logging.basicConfig()函数可以为改变logging模块的默认行为,可用参数:
filename:用指定的文件创建FileHandler,这样日志会被存储在指定的文件中
filemode:文件的打开方式,在指定filename时使用这个参数,默认值为'a'表示追加,可以指定为'w'覆盖
format:指定handler使用的日志显示格式
datefmt:指定日期时间格式
level:设置rootlogger的日志级别

格式化:
%(name)s:Logger的名字,并非用户名,详细查看

%(levelno)s:数字形式的日志级别

%(levelname)s:文本形式的日志级别

%(pathname)s:调用日志输出函数的模块的完整路径名,可能没有

%(filename)s:调用日志输出函数的模块的文件名

%(module)s:调用日志输出函数的模块名

%(funcName)s:调用日志输出函数的函数名

%(lineno)d:调用日志输出函数的语句所在的代码行

%(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数

%(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d:线程ID。可能没有

%(threadName)s:线程名。可能没有

%(process)d:进程ID。可能没有

%(message)s:用户输出的消息

 

 

(未完,待续)

posted @ 2018-05-04 17:30  jonas_von  阅读(160)  评论(0编辑  收藏  举报