一、time时间模块
1. linux中三种time(atime,mtime,ctime)
1>访问时间(access time 简写为atime)
2>修改时间(modify time 简写为mtime)
3>状态修改时间(change time 简写为ctime)
关于Linux底下三种时间的简单介绍:
atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统
的进程直接使用或通过一些命令和脚本间接使用。(执行一些可执行文件或脚本)
mtime: (modify time)显示的是文件内容被修改的最后时间,比如用vi编辑
时就会被改变。(也就是Block的内容)
ctime: (change time)显示的是文件的权限、拥有者、所属的组、链接数发
生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容
发生改变时)
2.random模块
>>> import random
>>> random.random()
0.7664338663654585
>>> random.uniform(1,3)
1.6270147180533838
>>> random.randint(1,5)
>>> random.randrange(1,10,2)
>>> random.choice([1,'23',[4,5]])
>>> random.sample([1,'23',[4,5]],2)
[[4, 5], '23']
>>> item=[1,3,5,7,9]
>>> random.shuffle(item)
>>> item
[5, 1, 3, 7, 9]
>>> random.shuffle(item)
>>> item
[5, 9, 7, 1, 3]
3.sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version 获取Python解释程序的版本信息
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
二、OS模块(重要)
1. 什么是OS模块
os(operate system)
os模块是与操作系统交互的一个接口
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.system("bash command") 运行shell命令,直接显示
os.popen("bash command).read() 运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.path
os.path.abspath(path) 返回path规范化的绝对路径os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
2.练习题
import os
'''小练习'''
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
file_patn = os.path.join(BASE_DIR, '小视频')
os_listdir = os.listdir(file_patn)
while True:
for k, v in enumerate(os_listdir):
print(k + 1, v)
cmd = input('请输入您的视频编号:').strip()
if cmd.isdigit():
cmd = int(cmd)
if cmd in range(1, len(os_listdir) + 1):
os_path_join_filename = os.path.join(file_patn, os_listdir[cmd - 1])
with open(os_path_join_filename, 'r', encoding='utf8') as rfile:
rfile_read = rfile.read()
print(rfile_read)
answer = input('是否继续统计y?')
if not answer == 'y':
break
continue
else:
print('您输入的序号不存在')
else:
print('您输入的编号不合法')
三、序列化模块(重要)
1.json的介绍
json格式
实现了跨语言传输
什么是序列?
序列就是字符串
什么是序列化?
把其它数据类型转为字符串的过程就是序列化
list、dict、tuple等----->str的过程
什么是反序列化?
把字符串转为其它数据类型的过程就是反序列化
str----->list、dict、tuple等
eg:
d = {'username': '张三'}
序列化:
res = str(d)
'''
能够直接写入文件的类型有哪些?
1.字符串
2.二进制
'''
import json
json.dumps:序列化
json.loads:反序列化
2.Json模块提供了四个功能:dumps、dump、loads、load
1.loads和dumps
import json
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = json.dumps(dic)
print(type(str_dic),str_dic)
dic2 = json.loads(str_dic)
print(type(dic2),dic2)
list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
str_dic = json.dumps(list_dic)
print(type(str_dic),str_dic)
list_dic2 = json.loads(str_dic)
print(type(list_dic2),list_dic2)
2.load和dump
import json
f = open('json_file','w')
dic = {'k1':'v1','k2':'v2','k3':'v3'}
json.dump(dic,f)
f.close()
f = open('json_file')
dic2 = json.load(f)
f.close()
print(type(dic2),dic2)
3.ensure_ascii关键字参数
f = open('a.txt', 'w')
json.dump({'国籍': '中国'}, f)
res = json.dumps({'国籍': '中国'})
f.write(res + '\n')
json.dump({'国籍': '美国'}, f, ensure_ascii=False)
ret = json.dumps({'国籍': '美国'}, ensure_ascii=False)
f.write(ret + '\n')
f.close()
'''其它参数说明'''
Serialize obj to a JSON formatted str.(字符串表示的json对象)
Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key
ensure_ascii:,当它为True的时候,所有非ASCII码字符显示为\uXXXX序列,只需在dump时将ensure_ascii设置为False即可,此时存入json的中文即可正常显示。)
indent:应该是一个非负的整型,如果是0就是顶格分行显示,如果为空就是一行最紧凑显示,否则会换行且按照indent的数值显示前面的空白分行显示,这样打印出来的json数据也叫pretty-printed json
separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(‘,’,’:’);这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。
sort_keys:将数据根据keys的值进行排序。
四、pickle和json的区别
json不是所有的数据类型都可以序列化"可以跨语言"
pickle它能够序列化所有的数据类型,比如,视频、音频、对象等
"""pickle序列化之后的数据只能在python中使用,不能跨语言"""
pickle它也有四个方法:dumps、loads、dump、loads
用法和json一模一样,
区别是:pickle序列化出来的结果都是二进制类型,字节类型
import pickle
d2 = {'a':1}
ss = b'{"username":"kevin","age":"18"}'