Python之常用模块(四)os模块和sys模块

5.4 random模块

print(random.random())#在0~1之间随机生成一个浮点数
print(random.uniform(0,10))#在0~10时间随机生成一个浮点数,可以指定范围
print(random.randint(1,10))#随机生成一个整数,可以指定范围
print(random.randrange(1,5,2))#起始终止步长,生成一个数字
print(random.chioce([1,2,3,4,5,6]))#随机选择一个元素
print(random.chioces([1,2,3,4,5,6,7]),k=2)#随机选择两个元素,会有重复的
print(random.sample((1,2,3,4,5,6,7,8)),k=2)#随机选择两个元素,不会有重复的,除非只有两个
print(random.shuffle(lst))#打乱顺序
*************************************************
>>> import random
#随机小数
>>> random.random()     # 大于0且小于1之间的小数
0.7664338663654585
>>> random.uniform(1,3) #大于1小于3的小数
1.6270147180533838

#随机整数
>>> random.randint(1,5)  # 大于等于1且小于等于5之间的整数***
>>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数***

#随机选择一个返回
>>> random.choice([1,'23',[4,5]])  # #1或者23或者[4,5]
#随机选择多个返回,返回的个数为函数的第二个参数***
>>> random.choices([1,2,3,4],k=2) # 选择两个元素,会有重复,可控制元素个数***
>>> random.sample([1,'23',[4,5]],k=2) # #列表元素任意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]

5.5 序列化

  1. 序列化简介:我们今天学习下序列化,什么是序列化呢? 序列化的本质就是将一种数据结构(如字典、列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化。
  2. json模块:是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去。
    • 用于网络传输:dumps、loads
    • #dumps
      #将字典类型转换成字符串类型
      import json
      dic = {'k1':'v1','k2':'v2','k3':'v3'}
      str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
      print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
      #注意,json转换完的字符串类型的字典中的字符串是由""表示的
      
      #loads
      #将字符串类型的字典转换成字典类型
      import json
      dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
      #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
      print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
    • 用于文件写读:dump、load
    • #dump
      #将对象转换成字符串写入到文件当中
      import json
      f = open('json_file.json','w')
      dic = {'k1':'v1','k2':'v2','k3':'v3'}
      json.dump(dic,f)  #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
      f.close()
      # json文件也是文件,就是专门存储json字符串的文件。
      
      #load
      #将文件中的字符串类型的字典转换成字典
      import json
      f = open('json_file.json')
      dic2 = json.load(f)  #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
      f.close()
      print(type(dic2),dic2)
    • 其他参数说明
      • #ensure_ascii:,当它为True的时候,所有非ASCII码字符显示为\uXXXX序列,只需在dump时将ensure_ascii设置为False即可,此时存入json的中文即可正常显示。
        
        #separators:分隔符,实际上是
        #(item_separator, dict_separator)的一个元组,默认的就是(,,:);这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。
        
        #sort_keys:将数据根据keys的值进行排序。 剩下的自己看源码研究
      • json序列化存储多个数据到同一个文件中:对于json序列化,存储多个数据到一个文件中是有问题的,默认一个json文件只能存储一个json数据,但是也可以解决
        • dic1 = {'name':'oldboy1'}
          dic2 = {'name':'oldboy2'}
          dic3 = {'name':'oldboy3'}
          f = open('序列化',encoding='utf-8',mode='a')
          str1 = json.dumps(dic1)
          f.write(str1+'\n')
          str2 = json.dumps(dic2)
          f.write(str2+'\n')
          str3 = json.dumps(dic3)
          f.write(str3+'\n')
          f.close()
          
          f = open('序列化',encoding='utf-8')
          for line in f:
              print(json.loads(line))
  3. pickle模块
    • 简介:pickle模块是将Python所有的数据结构以及对象等转化成bytes类型,然后还可以反序列化还原回去
    • 用于网络传输:dumps、loads
      • #dumps
        import pickle
        dic = {'k1':'v1','k2':'v2','k3':'v3'}
        str_dic = pickle.dumps(dic)
        print(str_dic)  # bytes类型
        
        dic2 = pickle.loads(str_dic)
        print(dic2)    #字典
        
        #loads
        import pickle
        def func():
            print(666)
        
        ret = pickle.dumps(func)
        print(ret,type(ret))  # b'\x80\x03c__main__\nfunc\nq\x00.' <class 'bytes'>
        f1 = pickle.loads(ret)  # f1得到 func函数的内存地址
        f1()  # 执行func函数
    • 用于文件写读:dump、load
      • dic = {(1,2):'oldboy',1:True,'set':{1,2,3}}
        f = open('pick序列化',mode='wb')
        pickle.dump(dic,f)
        f.close()
        with open('pick序列化',mode='wb') as f1:
            pickle.dump(dic,f1)
    • pickle序列化存储多个数据到一个文件中
      • dic1 = {'name':'oldboy1'}
        dic2 = {'name':'oldboy2'}
        dic3 = {'name':'oldboy3'}
        
        f = open('pick多数据',mode='wb')
        pickle.dump(dic1,f)
        pickle.dump(dic2,f)
        pickle.dump(dic3,f)
        f.close()
        
        f = open('pick多数据',mode='rb')
        while True:
            try:
                print(pickle.load(f))
            except EOFError:
                break
        f.close()
  4. 总结:序列化模块就是将一个常见的数据结构转化成一个特殊的序列,并且这个特殊的序列还可以反解回去。它的主要用途:文件读写数据,网络传输数据。

原文地址:https://www.cnblogs.com/zhangdadayou/p/11415275.html

时间: 2024-10-08 00:36:51

Python之常用模块(四)os模块和sys模块的相关文章

python os, os.path和sys模块

os:提供与系统交互的接口 常用方法: os.name:显示所使用的平台 os.system(command):运行shell命令 os.getcwd():查看工作目录 os.chdir(d):改变工作目录 os.listdir(d):查看指定目录下的所有内容 os.remove(f):删除指定文件 os.chmod(f,c):修改指定文件的权限,linux中以四个八进制数表示 os.makeirs(dn):递归创建目录 os.mkdir(dn):创建目录,父目录必须存在 os.rmdir(dn

常见模块(四) os模块

注: os模块是实现python程序对操作系统(operation system)的操作 1.对文件或者目录进行删除或者创建的相关操作 # os.rename("b","c") #将a文件或者目录修改成b文件或者目录 # os.remove("a") #只能移除a文件 # os.removedirs("a\b") #递归删除一个目录,前提是目录下没有文件 # os.mkdir("a") #创建一个空目录 #

Python学习笔记(四十二)第三方模块(PIL)图像处理

摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320027235877860c87af5544f25a8deeb55141d60c5000 安装Pillow 在命令行下直接通过pip安装: $ pip install pillow 如果遇到Permission denied安装失败,请加上sudo重试. 操作图像 来看看最常见的图像缩放操作,只需三四行代码:

常用模块学习(7)sys模块详解

1.sys.argv获取当前正在执行的命令行参数的参数列表(list). sys.argv[0]: 当前程序名   sys.argv[1]:第一个参数 sys.argv[2]:第二个参数 参考代码: # encoding: utf-8 # filename: argv_test.py import sys # 获取脚本名字 print 'The name of this program is: %s' %(sys.argv[0]) # 获取参数列表 print 'The command line

Python中模块之os &amp; sys的功能介绍

os & sys的功能介绍 1. os模块 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module 'ntpath' from 'D:\\python3.5.2\\lib\\ntpath.py'> #返回posixpath和netpath两个模块中任意一个模块 name 模块名 方法:os.name 返回值:str 例如:print(os.name) >>> nt

os和sys模块的区别

os与sys模块的官方解释如下: os: This module provides a portable way of using operating system dependent functionality.这个模块提供了一种方便的使用操作系统函数的方法.sys: This module provides access to some variables used or maintained by the interpreter and to functions that interact

python的sys模块

转自:https://blog.csdn.net/zyc_love_study/article/details/78983817 python版本: Python 2.7.6 1: sys是python自带模块. 利用 import 语句输入sys 模块. 当执行import sys后, python在 sys.path 变量中所列目录中寻找 sys 模块文件.然后运行这个模块的主块中的语句进行初始化,然后就可以使用模块了 . 2: sys模块常见函数 可以通过dir()方法查看模块中可用的方法

[转载]python中的sys模块(二)

#!/usr/bin/python # Filename: using_sys.py import sys print 'The command line arguments are:' for i in sys.argv: print i print '\n\nThe PYTHONPATH is', sys.path, '\n' 输出结果如下 它如何工作 首先,我们利用 import 语句 输入 sys 模块.基本上,这句语句告诉 Python,我们想要使用这个模块.sys 模块包含了与 Py

Python中常用的模块(OS模块)

一.Python OS模块介绍 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: >>> import os #导入os模块>>> help(os)   #查看os模块帮助文档,里面详细的模块相关函数和使用方法 二.OS模块重要函数和变量: 1 ).os.sep 更改操作系统中的路径分隔符.2 ).os.getcwd()获取当前路径,这个在Python代码中比较常用.3 ).os.

Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块

主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功能的代码进行归类的结果引入模块的方式: (1) import 模块 (2) from 位置 import 模块 二. collections模块 collections模块主要封装了一些关于集合类的相关操作. 如我们学过的iterable,iterator等等.除此以外, collections还提