前言:个人觉得前期没必要太纠结os、和sys的一些详细指令,花时间去记没必要
os、sys、random
os模块主要是和操作系统的交互,主要包括以下三种功能
1、文件夹和文件的处理:
创建文件夹: os.makedirs('x') --可创建多层目录
删除文件夹: os.rmdir('x') --删除单级空目录
删除文件:os.remove('x') --删除文件
2、路径的处理:路径的拆分、拼接、计算大小、判断目录是否存在、是否为文件/文件夹、以及绝对路径等等
os.listdir('x'):列出该路径下所有的路径和目录,以列表的形式。
os.stat('x'):获取文件或者目录信息
os.path.abspath('x'):获取绝对路径
os.path.exists('x'):判断文件是否存在,返回Booleans
os.stat('x').st_size: 获取文件大小
os.path.join(x1,x2):将多个字符串路径拼接成一个完整的路径 ---常用
os.path.getatime('x')/os.path.getmtime('x'):文件或者目录的最后存取/修改时间。
os.path.isfile('x')/os.path.isdir('x'):判断文件/目录是否存在。
----还有一些基本很少用到,就不记了
3、执行操作系统命令:
os.system('xxx')
sys模块主要是和python解释器打交道的(前期不常用):
sys.args:在外部向程序内部传递参数
sys.path:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
sys.modules:全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules
将自动记录该模块。
当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法。
random随机模块
random.uniform(x,y) :取x-y区间内的小数
random.randint(x,y):取x-y范围内的整数/random.randrange(x,y,z):取x-(y-1)范围内的整数,z表示步长。
random.choice(list):在list中随机取一个值,多次操作可能重复
random.sample(list,x):在list中随机取x个值,不可能出现重复数据
random.shuffle(list):打乱一个列表的顺序,在原列表直接进行修改
random练习:写一个发红包的程序
1 # 发红包 2 def red_packet(money, num): 3 money = money * 100 # 先转换成分,然后取整数 4 ret = random.sample(range(1, money), num-1) # sample()可以从指定的序列中,随机的截取指定长度的片断, 5 ret.sort() # 排序 6 ret.insert(0, 0) # 前面的0是索引, 后面的0是插入0 7 ret.append(money) # 结尾追加money 8 for i in range(len(ret)-1): 9 yield (ret[i+1] - ret[i])/10010 11 12 ret_g = red_packet(100, 10)13 for m in ret_g:14 print(m)15 16 '''17 思路:18 1、先转换成分取整数,最后转成元,可以正常保留两位小数,省了很多事儿。19 2、因为要分等num份,所以要sample的次数为num-1。20 3、排序可避免取值为负的问题。然后取值应该是sample之后的列表中每后一位减去前一位的值,这样全部加起来才是刚好等于money数量(而不是直接sample之后list值直接操作,这里要想清楚)21 所以这里首尾要加上0和money22 '''
json和pickle
json的基本操作
json.dumps(dic):序列化 字典转json
json.loads(str):反序列化 json转字典
与之对应的还有json.dump()和json.load()主要用来读写json文件函数
dumps和loads是操作内存,一般用于网络传输
dump和load是操作文件,一般用于文件操作。
json的缺点:
json能够处理的数据类型是非常有限的:只能处理字符串,列表,字典,数字且字典中的key只能是字符串。
打个比方。如果字典的key是数字,那么转换时会强制转换成字符串,且转回字典之后还是字符串。同理,如果value是一个元祖,也会转成list,不会转回来
pickle:
pickle的语法与json一样。区别就是json主要用于数据传输。而pickle主要用于项目内部的,即使用范围仅限python。那么pcikle也就没有上面json的缺点了。