迭代器和生成器
可迭代对象:可以直接作用于for循环的对象统称为可迭代对象(iterable)
用isinstance()来判断是否为可迭代对象
判断是否为可迭代对象 isinstance({1,2},Iterable) 除了数字,字符串,布尔值,其他都可以for循环,字符串也可以
from collections import Iterable 不是全局包,必须指明出处
迭代器:
- 迭代器必须是一个可迭代的对象
- 有两个基本方法 iter(), next()
- 我们也可以使用isinstance()来判断是否为迭代器
- 迭代器只能不断往后走,走完以后再走会报stopIteration错误
# 迭代器
collections import Iterator # 导入迭代器的数据类型
myStrIterator = iter("abcd")
print(myStrIterator) # <str_iterator object at 0x000000E1CFB9CB00>
print(isinstance(myStrIterator,Iterator)) # True 是一个迭代器
print(isinstance("abcd",Iterator)) # False "abcd"是一个可迭代对象,不为迭代器
# 使用next方法 一个一个值的取
# print(next(myStrIterator)) # a
print(next(myStrIterator)) # b
print(next(myStrIterator)) # c
# print(next(myStrIterator)) # d
# print(next(myStrIterator)) # error StopIteration
# 使用for循环遍历迭代器(会继续从上次执行的位置,继续向下执行)
for i in myStrIterator:
print(i)
生成器:
- 函数使用了yield关键字 成为生成器
- 使用了列表生成器 (i for i in range(1000)) 叫做生成器
- 生成器也可以使用迭代器的next()方法 一个一个取值
生成器的好处,节约电脑资源
os模块
概念:包含了普遍操作系统的功能
一. 函数
函数名 | 函数说明 |
---|---|
os.name | 获取当前操作系统的类型,nt->windows, posix->linux mac |
os.environ | 获取操作系统中的所有环境变量 |
os.getcwd() | 获取当前的工作路径 |
os.listdir(path) | 以列表的形式返回目录的文件 |
os.mkdir(path) | 创建新的目录,如果文件存在报错 |
os.rmdir(path) | 删除空目录,如果找不到目录保错 |
os.rename(old,name) | 重命名,并修改文件路径 |
os.remove(filename) | 删除文件 |
os.system(cmd) | 运行shell命令 |
os.path.join(dir,filename) | 拼凑完整路径 |
os.path.isdir() | 判断是否为目录 |
os.path.isfile() | 判断是否为文件 |
os.path.splitext(path) | 获取文件的扩展名(将目录和文件名后缀拆分,例如: .txt),返回元组形式 |
os.path.exists(path) | 判断文件或路径是否存在 |
os.path.getSize(path) | 获取文件的字节数 |
os.path.dirname(path) | 获取目录名称(目录名) |
os.path.basename(path) | 获取文件名 |
os.path.abspath(path) | 获取当前文件的绝对路径 |
os.path.split(path) | 拆分路径(将目录和文件名拆分),返回元组的形式 |
时间
两个模块
time datetime
概念: 时间戳是指格林威治1970年1月1日00时00分00秒到现在的整数或者浮点数的秒数
time模块常用的函数
函数名 | 函数说明 |
---|---|
time.time() | 获取当前的秒数(时间戳) |
time.localtime([时间戳]),其中时间戳为可选参数 | 接收时间戳,返回时间的元组0-6代表周一到周日 |
time.asctime() | 返回格式化后的英文文本时间 |
time.strftime(格式化时间的占位符, [时间元组]),其中时间元组可选 | 格式化时间,默认本地 |
time.mktime(时间元组) | 将时间元组转为时间戳并返回 |
time.sleep(秒) | 推迟调用线程的时间 |
time.strptime("2018-1-5 14:28:00","%Y-%m-%d %H:%M:%S") | 将指定的时间格式转换为时间元组 |
time.clock() | 用浮点数计算当前cpu运行某个程序所花费的时间比time.time()更加精准 |
总结: 给出固定的时间 转换成时间戳的方式:
python中时间日期格式化符号:(占位符)
- %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 当前时区的名称
- %% %号本身
datetime模块
对time模块的封装 更加直观
datetime的常用函数
导入模块
from datetime import datetime # 从库中导入模块
import datetime # 导入库
函数名 | 函数说明 |
---|---|
datetime.now() | 返回当前的时间 |
datetime.datetime(年,月,日,时,分,秒,微秒数) | 获取指定的时间 |
时间.timestamp() | 通过时间返回时间戳 |
datatime.fromtimestamp(时间戳) | 把时间戳转换为时间 |
datetime.now().strftime(格式化的符号) | 将 now返回的时间格式化为你想要的时间 |