15(os、random、sys、)(json、pickle )

前言:个人觉得前期没必要太纠结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])/100
10 
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和money
22 '''

    

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的缺点了。

  

原文地址:https://www.cnblogs.com/cbslock/p/11176240.html