1.常用模块:(1)collectiaons模块 (2)与时间相关 time模块 (3)random模块 (4)os模块 (5)sys模块 (6) 序列化模块: json , pickle
2.random模块
3.time模块
4.sys模块
5.os模块 部分知识点
一. random 模块:取随机数的模块
(1)取随机小数: 数学计算
print(random.random()) # 取0-1之间的小数
print(random.uniform(1,2)) # 取1-2之间的小数
# 结果: 0.9234934964280419 1.5132205002520736
(2)取随机整数: 彩票,抽奖
import random
print(random.randint(1,2)) # [1,2] #顾头顾尾 print(random.randrange(1,2)) # [1,2) #顾头不顾尾 print(random.randrange(1,200,2)) # [1,2) #1-200之间的奇数 #结果: 1 1 141
(3)从列表上中抽取值: 抽奖
l = ['a','b',(1,2),123] print(random.choice(l)) # 取一个 print(random.sample(l,2)) # 取多个 #结果: a ['b', 'a']
(4)打乱一个列表的顺序: 在原列表的基础上直接进行修改,节省空间: 洗牌
l = ['a','b',(1,2),123] random.shuffle(l) print(l) # 打乱顺序 #结果: [123, 'b', 'a', (1, 2)]
二.time模块:time模块主要是用来和时间打交道的.
import time
时间格式: 格式化时间,时间戳时间,结构化时间
'2018-8-20' '2018.8.20' 字符串数据类型 格式化时间 - 给人看的
结构化时间 1534732642.617272 浮点型数据类型,以s为单位 时间戳时间 - 给机器计算用的 伦敦时间开始计算:1970 1 1 0:0:0
时间戳时间;
print(time.time()) #结果:1534764717.8744347
格式化时间;
print(time.strftime('%Y-%m-%d %H:%M:%S')) # str format time print(time.strftime('%y-%m-%d %H:%M:%S')) # str format time print(time.strftime('%c')) #结果: 2018-08-20 19:32:43 18-08-20 19:32:43 Mon Aug 20 19:32:43 2018
结构化时间:
struct_time = time.localtime() # 北京时间 print(struct_time) print(struct_time.tm_mon) #月份 #结果: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=19, tm_min=34, tm_sec=11, tm_wday=0, tm_yday=232, tm_isdst=0) 8
时间戳时间转换成字符串时间:
struct_time = time.localtime(1500000000) print(time.gmtime(1500000000)) ret = time.strftime('%y-%m-%d %H:%M:%S',struct_time) print(ret) #结果: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0) 17-07-14 10:40:00
字符串时间转换成时间戳时间:
struct_time = time.strptime('2018-8-8','%Y-%m-%d') print(struct_time) res = time.mktime(struct_time) print(res) #结果: time.struct_time(tm_year=2018, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=220, tm_isdst=-1) 1533657600.0
三.sys模块:和python解释器打交道的模块
(1)sys.argv:argv的第一个参数是python这个命令后面的值.
注:当你在命令行执行python文件,而不是在pycharm中执行这个文件的时候,
你的命令>>> python python文件的路径 参数1 参数2 参数3 ...
sys.argv = ['python文件的路径','参数1','参数2','参数3'...]
好处:这些需要输入的参数不需要在程序中以input的形式输入了
文件名: 文件路径不能有中文 所有的文件名都应该符合变量命名规范
整个文件路径不能有空格 不支持中文
(2)sys.path:
注:模块搜索路径 是一个列表,这个列表中存的都是文件夹的绝对路径
一个模块能被导入,是因为这个模块所在的文件夹在sys.path的列表中
内置模块和第三方模块安装之后,不需要操作sys.path,直接用就行了
如果一个模块导入不进来,那把这个模块的文件夹添加到sys.path中就行了
模块本来就在解释器里么?
不是的,模块本来应该是存在硬盘上.但是在使用时,通过 import ..... 模块 这时,模块才到内存中.
一个模块能否被顺利的引入,全看sys.path下面有没有这个模块的所在.(自定义模块的时候,还需要再关注sys.path)
(3)sys.modules: 是导入到内存中的所有模块的名字:这个模块的内存地址.
print(sys.modules) # 是我们导入到内存中的所有模块的名字 : 这个模块的内存地址 #结果: {'builtins': <module 'builtins' (built-in)>, 'sys': <module 'sys' (built-in)>, '_frozen_importlib': <module '_frozen_importlib' (frozen)>, '_imp': <module '_imp' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_thread': <module '_thread' (built-in)>, '_weakref': <module '_weakref' (built-in)>, '_frozen_importlib_external': <module '_frozen_importlib_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, 'winreg': <module 'winreg' (built-in)>, 'zipimport': <module 'zipimport' (built-in)>, 'encodings': <module 'encodings' from 'C:\\Python36\\lib\\encodings\\__init__.py'>, 'codecs': <module 'codecs' from 'C:\\Python36\\lib\\codecs.py'>, '_codecs': <module '_codecs' (built-in)>, 'encodings.aliases': <module 'encodings.aliases' from 'C:\\Python36\\lib\\encodings\\aliases.py'>, 'encodings.utf_8': <module 'encodings.utf_8' from 'C:\\Python36\\lib\\encodings\\utf_8.py'>, '_signal': <module '_signal' (built-in)>, '__main__': <module '__main__' from 'E:/python_01/day18/code/day18/5.sys模块.py'>, 'encodings.latin_1': <module 'encodings.latin_1' from 'C:\\Python36\\lib\\encodings\\latin_1.py'>, 'io': <module 'io' from 'C:\\Python36\\lib\\io.py'>, 'abc': <module 'abc' from 'C:\\Python36\\lib\\abc.py'>, '_weakrefset': <module '_weakrefset' from 'C:\\Python36\\lib\\_weakrefset.py'>, 'site': <module 'site' from 'C:\\Python36\\lib\\site.py'>, 'os': <module 'os' from 'C:\\Python36\\lib\\os.py'>, 'errno': <module 'errno' (built-in)>, 'stat': <module 'stat' from 'C:\\Python36\\lib\\stat.py'>, '_stat': <module '_stat' (built-in)>, 'ntpath': <module 'ntpath' from 'C:\\Python36\\lib\\ntpath.py'>, 'genericpath': <module 'genericpath' from 'C:\\Python36\\lib\\genericpath.py'>, 'os.path': <module 'ntpath' from 'C:\\Python36\\lib\\ntpath.py'>, '_collections_abc': <module '_collections_abc' from 'C:\\Python36\\lib\\_collections_abc.py'>, '_sitebuiltins': <module '_sitebuiltins' from 'C:\\Python36\\lib\\_sitebuiltins.py'>, 'sysconfig': <module 'sysconfig' from 'C:\\Python36\\lib\\sysconfig.py'>, 'sitecustomize': <module 'sitecustomize' from 'C:\\Program Files\\JetBrains\\PyCharm 2018.1.4\\helpers\\pycharm_matplotlib_backend\\sitecustomize.py'>, 're': <module 're' from 'C:\\Python36\\lib\\re.py'>, 'enum': <module 'enum' from 'C:\\Python36\\lib\\enum.py'>, 'types': <module 'types' from 'C:\\Python36\\lib\\types.py'>, 'functools': <module 'functools' from 'C:\\Python36\\lib\\functools.py'>, '_functools': <module '_functools' (built-in)>, 'collections': <module 'collections' from 'C:\\Python36\\lib\\collections\\__init__.py'>, 'operator': <module 'operator' from 'C:\\Python36\\lib\\operator.py'>, '_operator': <module '_operator' (built-in)>, 'keyword': <module 'keyword' from 'C:\\Python36\\lib\\keyword.py'>, 'heapq': <module 'heapq' from 'C:\\Python36\\lib\\heapq.py'>, '_heapq': <module '_heapq' (built-in)>, 'itertools': <module 'itertools' (built-in)>, 'reprlib': <module 'reprlib' from 'C:\\Python36\\lib\\reprlib.py'>, '_collections': <module '_collections' (built-in)>, 'weakref': <module 'weakref' from 'C:\\Python36\\lib\\weakref.py'>, 'collections.abc': <module 'collections.abc' from 'C:\\Python36\\lib\\collections\\abc.py'>, 'sre_compile': <module 'sre_compile' from 'C:\\Python36\\lib\\sre_compile.py'>, '_sre': <module '_sre' (built-in)>, 'sre_parse': <module 'sre_parse' from 'C:\\Python36\\lib\\sre_parse.py'>, 'sre_constants': <module 'sre_constants' from 'C:\\Python36\\lib\\sre_constants.py'>, '_locale': <module '_locale' (built-in)>, 'copyreg': <module 'copyreg' from 'C:\\Python36\\lib\\copyreg.py'>}
四.os模块: 和操作系统交互的模块
补充:
os模块主要所做的事儿
定制了很多方法 间接的帮助你去调用操作系统的命令 获得结果
然后帮助你分析整理成我们需要的数据类型的形态
你也可以os.popen/os.system直接取调用操作系统的命令 获得结果
但是 分析和整理的工作需要你自己做
用os模块的方法本身能够完成的功能我们就用定制好的方法就够了
如果有一天 你发现os模块定制好的功能解决不了我们的问题了
而刚好操作系统的命令能够很好地帮助我们解决问题
这个时候就用os.popen/os.system
(1)与文件夹操作相关的
建立文件夹:
os.makedirs('dirname1/dirname2'):可生成多层递归目录
os.mkdir('dirname'):生成单级目录;相当于shell中mkdir dirname
os.makedirs('dir1/dir2') #建立多个文件夹 os.mkdir('dir3') #建立一个文件夹 os.mkdir('dir3/dir4') #建立多个文件夹
只能删除空文件夹:
os.rmdir('dir3/dir4') os.removedirs('dir3/dir4') os.removedirs('dir1/dir2') #下面如果有非空子文件夹,删除上一层
os.rmdir('dirname'):删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.removedirs('dirname1');若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
整理文件夹:
file_lst = os.listdir('D:\sylar\s15') for path in file_lst: print(os.path.join('D:\sylar\s15',path)) # 可以在不同的系统运行
os.listdir('dirname'):查看当前目录下的所有文件夹和文件
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.path.join: 拼接目录
os.stat('path/filename'): 获取文件的信息
(2)和 运行,执行程序 相关的:
exec/eval执行的是字符串数据类型的 python代码
os.system和 os.popen是执行字符串数据类型的 命令行代码
补充:
os.system("bash command") 运行shell命令,直接显示
os.popen("bash command).read() 运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
import os 统计文件大小 os.path.getsize('路径') # python的命令 dir 路径 \C # 操作系统的命令 帮助你显示当前路径下的所有文件和文件夹 os.system('dir 路径') # 使用python语言直接执行操作系统的命令 os.listdir('路径') # 使用python语言的os模块提供的方法 间接调用了操作系统命令 # 程序员 python开发的 # 和python代码打交道 # 学习python的人 # web开发 # 运维开发 : 运维功底 熟悉操作系统命令 exec('字符串数据类型的python代码') eval('执行字符串数据类型的python代码') os.system('执行字符串数据类型的操作系统命令') os.popen('执行字符串数据类型的操作系统命令,并返回结果') os.getcwd # 获取当前执行命令的时候所在的目录 os.chdir # 修改当前执行命令的时候所在的目录
os.system('dir'):执行操作系统的命令,没有返回值,实际的操作/删除一个文件 创建一个文件夹 exec
程序要处理这些路径 运行shell命令,直接显示
os.popen('die').read:适合做查看类的操作 运行shell命令,获取执行结果
os.getcwd() : current work dir 当前工作目录,并不是指当前文件所在的目录,是指当前文件是在哪个目录下执行的. 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir('D:\sylar\s15\day18'): 切换当前的工作目录. 改变当前脚本工作目录;相当于shell下cd