zoukankan      html  css  js  c++  java
  • 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的缺点了。

      

  • 相关阅读:
    常用的学生、课程、成绩、教师表的查询
    flutter 自定义TabBar
    Flutter 设置input边框
    Flutter ReorderableListView 可拖拽的列表
    Flutter NotificationListener 监听列表的滚动
    Flutter 使用Tabbar不要Title
    Nestjs 验证对象数组
    postman 发送数组
    JS面向切面编程AOP
    什么是匿名函数、什么是闭包函数?
  • 原文地址:https://www.cnblogs.com/cbslock/p/11176240.html
Copyright © 2011-2022 走看看