首页 > 其他分享 >模块(os、json、pickle)

模块(os、json、pickle)

时间:2023-06-13 21:11:57浏览次数:52  
标签:pickle json res path 序列化 os

os模块

主要与操作系统打交道,是与操作系统交互的一个窗口

1. os.mkdir('dirname')

  创建单级目录dirname

2. os.makedirs('dirname1/dirname2')

  生成多层递归目录dirnmae1下的dirname2

3. os.rmdir('dirname')

  删除空白单级目录dirname,若dirname不为空则无法删除,并报错   

4. os.removedirs('dirname')

  若目录为空,则删除,并递归到上一级目录,若也为空,则删除,依次类推

5. os.listdir('dirname')

 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的形式返回

6. os.remove()

  删除一个文件

7. os.rename('oldname', 'newname')

  重命名一个文件/目录

8. os.stat('path/filename')

  获取文件/目录信息

9. os.getcwd()

  获取当前工作目录,即当前python脚本工作的目录路径

10. os.chdir('dirname')

  改变当前脚本的工作目录,相当于shell下的cd

11. os.path.abspath(path)

  返回path规范化的绝对路径

12. os.path.dirname(path)

  返回文件所在目录

13. os.path.basename(path)

  返回path最后的文件名,如果path以 / 或 \ 结尾,那么就会返回空值

14. os.path.exists(path)

  判断路径存不存在,若存在则返回True,不存在,则返回False

15. os.path.isabs(path)

  判断是否为绝对路径,返回True或False

16. os.path.isfile(path)

  判断是否为文件,是即返回True,不是则返回False

17. os.path.isdir(path)

  判断是否为文件夹,是即返回True,不是则返回False

18. os.path.join(path1, path2, ...  )

  依次将路径拼贴起来

19. os.path.getatime(path)

  返回path所指向的文件或目录最后访问的时间

20. os.path.getmtime(path)

  返回path所指向的文件或目录最后修改的时间

20. os.path.getsize(path)

  返回path的大小(bytes)

21. os.system('command')      22. os.open()

  命令指令               运行shell命令,获取执行结果

 

序列化模块(json)

序列就是字符串

序列化就是把其他数据类型转为字符串的过程,如 list、dict、tuple等转为str的过程

反序列化就是把字符串转为其他数据类型的过程,如 str 转化为 list、dict、tuple等

1.dumps、loads

json.dumps(d) :序列化

json.loads(d) :反序列化     #里面的字符串必须是双引号  

 

2.dump、loads

用于写入文件中使用,但只能做用单元素

json.dump()

  1.先序列化

  2.写入文件

json.load

例:

 1 import json
 2 
 3 dct = {'ccc':'111'}
 4 # 写入
 5 with open(r'a.txt', 'w', encoding='utf8') as f:
 6     json.dump(dct, f)   # 将dct写入a.txt中
 7 
 8 # 读取
 9 with open(r'a.txt', 'r', encoding='utf8') as f:
10     res = json.load(f)
11 print(res, type(res))   # {'ccc': '111'} <class 'dict'>

 

3.补充

用json序列化时,元素会被自动编码,可以改变编码格式

例:

1 import json
2 
3 dct = {'ccc菜': '111'}
4 print(json.dumps(dct))  # {"ccc\u83dc": "111"}
5 print(json.dumps(dct, ensure_ascii=False))  # {"ccc菜": "111"}

 

pickle和json的区别

json不是所有的数据类型都可以序列化,但是可以跨语言

pickle能够序列化所有的数据类型,比如视频,音频,照片等

但是pickle序列化之后的数据只能在python中使用,不能跨语言

 

pickle也有四个方法:dumps、loads、dump、load,用法和json一模一样,

区别是:pickle序列化出来的结果都是二进制类型,字节类型

 

打开文件读写,例:

 1 import pickle
 2 
 3 dct = {'ccc菜': '111'}
 4 with open(r'a.txt', 'bw' ) as f:
 5     pickle.dump(dct, f)
 6 
 7 with open(r'a.txt', 'br') as f:
 8     res = pickle.load(f)
 9     print(res)     # {'ccc菜': '111'}
10 
11 res = pickle.dumps(dct)
12 print(res)   # b'\x80\x04\x95\x13\x00\x00\x00\x00\x00\x00\x00}\x94\x8c\x06ccc\xe8\x8f\x9c\x94\x8c\x03111\x94s.'
13 
14 res = pickle.loads(res)
15 print(res)   # {'ccc菜': '111'}

 

标签:pickle,json,res,path,序列化,os
From: https://www.cnblogs.com/caicaix/p/17476163.html

相关文章

  • macOS系统adb logcat grep 过滤多个关键字
    macOS系统adblogcatgrep过滤多个关键字: 1、过滤单个关键字:adblogcat|grep"error" 2、过滤多个关键字:adblogcat|grep-e"error"-e"warning"-e"fatal" 把日志保存到本地:adblogcat|grep-e"error"-e"warning"......
  • sealos 五年磨一剑——云操作系统正式发布
    这是计划的一部分这是一个宏伟的计划,漫长且有趣。。。2018年的一个晚上,我写下了sealos第一行代码,当时仓库命名“kubeinit”,后一想格局太小,我不可能只做一个安装kubernetes的事,安装只是计划的一部分,后面改名sealos,一个宏大的云操作系统计划诞生!sealos第一个版本写完我就......
  • post、raw、json调用第三方接口
    1、调用第三方接口,对方接口文档写到”请求方式postjson格式、请求参数json格式“,看不懂,就用postMan试试看。发现只有一种方式能调用通, 2、 3、Content-Type:application/json  4、根据上面的方式,所有写了下面的方法:/****@paramurl接口地址*@paramputData......
  • ros2安装经验总结
    按照官网来安装的,ubuntu20上面安装galactic系列。参考ubuntuinstallros2 碰到问题,无法aptupdate,提示“NO_PUBKEYF42ED6FBAB17C654”,参考https://answers.ros.org/question/398460/how-to-add-a-pubkey/解决。我是在osboxes的镜像中安装的,已经通过mobaxterm登陆了,但后来......
  • buaa os lab4-challenge 信号系统的实现
    buaaoslab4-challenge信号系统的实现信号是什么生活中我们会收到各种各样的信号,比如老师在群里布置了一个新的ddl,或者肚子发出咕咕的叫声提醒我们该吃饭了,接收到信号之后我们并不是马上处理,需要等到一些合适的时机并前横利弊,比如对于人来说肯定是吃饭重要,所以我们会忽略ddl......
  • windows下使用minio搭建s3存储,使用laravel和postman进行测试
    1、下载服务端https://dl.min.io/server/minio/release/windows-amd64/minio.exe2、启动服务minio.exeserverd:\data\minio--console-address:9090 可以看到上面有两块ip,分别是9000和9000端口,其中9090是后台管理端地址的端口,9000是前台接口端口3、创建bucket4......
  • boost库之事件处理
    一、概述Boost.Signals所实现的模式被命名为"信号至插槽",它基于以下概念:当对应的信号被发出时,相关联的插槽即被执行,原则上,可以把"信号"和"插槽"分别替换为'事件'和'事件处理器',它提供了一个名为boost::signal的类,定义于boost/signal.hpp,实际上,这个头文件是唯一一个需要知道的,因......
  • ASEMI代理安森美MOS管FQL40N50参数,FQL40N50描述
    编辑-ZFQL40N50参数描述:型号:FQL40N50漏源电压VDSS:500V漏极电流ID:40A漏极电流-脉冲IDM:160A栅极-源极电压VGSS:±30V功耗PD:460W操作和储存温度范围TJ,TSTG:-55to+150℃零栅极电压漏极电流IDSS:1uA栅极阈值电压VGS(th):5V静态漏源导通电阻RDS(on):0.085Ω输入电容Ciss:5800......
  • Git(分布式版本控制系统)在Windows下的使用-将代码托管到开源中国(oschina)
    一、Git是什么?    Git---Thestupidcontenttracker,傻瓜内容跟踪器。Git是目前世界上最先进的分布式版本控制系统。二、SVN与Git的最主要的区别?     SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务......
  • centos7安装docker-compose插件
    引介docker-compose是docker的一款插件,常用来定义和运行多容器的docker应用。本篇文章就来介绍一下,如何在centos7的linux系统中安装docker-compose插件。安装方式docker-compose安装方式的主要可以分为两种,一是使用docker仓库进行安装,而是手动方式安装。使用docker仓库安装使......