一. os 模块 所有关于操作系统的内容都在os模块
    os.makedirs("d:/1PY/新建文件夹/宝宝")      # 可生成多层递归目录
    os.removedirs("d:/1PY/新建文件夹/宝宝")     # 若目录为空, 则删除, 并递归到上一级目录, 如若也为空, 则删除, 依次类推
    os.mkdir("d:/1PY/新建文件夹")      # 生成单级目录, 相当于shell中mkdir dirname
    os.rmdir("d:/1PY/新建文件夹")      # 删除单级空目录, 若目录不为空则无法删除, 报错, 相当于shell中的rmdir dirname
    lst = os.listdir("d:/")        # 列出指定目录下的所有文件和子目录, 包括隐藏文件, 并以列表方式打印
    "d:" 当前文件所在文件夹下    "d:/"  d盘
    print(lst)
    os.remove("")     # 指定删除一个文件
    os.rename("d:/1PY/周末大作业", "d:/1PY/周末作业")       # 重命名文件, 目录
    ret = os.stat("d:/1PY/周末作业")       # 获取文件/目录信息
    print(ret)
    os.stat_result(st_mode=16895, st_ino=1688849860285352, st_dev=399180, st_nlink=1, st_uid=0, st_gid=0,
                   st_size=4096, st_atime=1545896396, st_mtime=1545540100, st_ctime=1543629480)
    stat 结构:
    st_mode: inode 保护模式
    st_ino: inode 节点号。
    st_dev: inode 驻留的设备。
    st_nlink: inode 的链接数。
    st_uid: 所有者的用户ID。
    st_gid: 所有者的组ID。
    st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
    st_atime: 上次访问的时间。
    st_mtime: 最后一次修改的时间。
    st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,
    在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
    
    os.system("dir")     # 运行shell命令, 直接显示
    print(os.popen("dir").read())       # pipe open 运行shell命令, 获取执行结果
    ret = os.getcwd()     # current working directory 获取当前工作目录, 即当前python脚本工作的目录路径
    print(ret)
    os.chdir("d:/1PY/周末作业")      # 改变当前脚本工作目录, 相当于 shell下 cd
    ret = os.getcwd()
    print(ret)
    
    os.path
    
    ret = os.path.abspath("d:/1PY/Day20/x1.txt")       # absolute path 返回path规范化的绝对路径
    print(ret)
    ret = os.path.split("d:/1PY/周末作业")        # 将path分割成目录和文件名二元组返回
    print(ret)
    ('d:/1PY', '周末作业')
    print(os.path.dirname("d:/1PY/周末作业"))       # 返回path的目录, 其实就是os.path.split(path)的第一个元素
    d:/1PY
    print(os.path.dirname(__file__))                   # 当前文件的文件夹
    print(os.path.dirname(os.path.dirname(__file__)))   # 当前文件的文件夹的文件夹
    os.path.basename("d:/1PY/周末作业")     # 返回path最后的文件名, 如果path以/或\结尾, n那么就会返回空值, 即os.path.split(path)的第二个元素
    print(os.path.exists("d:/1PY/周末大作业"))        # 如果path存在, 返回True, 如果path不存在, 返回False
    os.path.isabs("path")       # 如果path是绝对路径, 返回True
    os.path.isfile("")      # 如果path是一个存在的文件, 返回True, 否则返回False
    os.path.isdir("")       # 如果path是一个存在的目录, 则返回True
    os.path.join(path[, path2[, ...]])        # 将多个路径组合后返回, 第一个绝对路径之前的参数将被忽略
    print(os.path.join("d:/2PY", "Day23"))
    d:/2PY/Day23
    print(os.path.getatime("d:/2PY/Day23 模块_02"))      # 返回path指向的文件或目录的最后访问时间
    print(os.path.getmtime("d:/2PY/Day23 模块_02"))      # 返回path指向的文件或目录的最后修改时间
    print(os.path.getsize("d:/2PY/Day22 模块_01"))       # 返回path的大小
    1545899709.7857668
    1545894003.6891558
    0
    
    特殊属性
    print(os.sep)     # 输出操作系统特定的路径分隔符, win下为"\\", linux下为"/"
    print(os.linesep)       # 输出当前平台使用的行终止符  win下为"\r\n", linux下为"\n"
    print(os.pathsep)       # 输出用于分割文件路径的字符串  win下为";", linux下为":"
    print(os.name)      # 输出字符串指示当前使用平台  win下为"nt", linux下为"posix"

二. sys模块 所有关于python解释器相关的都在sys模块
    print(sys.argv)     # 命令行参数list, 第一个元素时程序本身路径
    ['D:/1PY/Day23/Day23_练习.py']
    sys.exit(0)         # 退出程序, 正常退出是exit(0), 错误退出sys.exit(1)
    print(sys.version)      # 获取python解释程序的版本信息
    3.6.7 (v3.6.7:6ec5cf24b7, Oct 20 2018, 12:45:02) [MSC v.1900 32 bit (Intel)]
    
    重要
    print(sys.path)     # 返回模块的搜索路径, 初始化时使用pythonpath环境变量的值
    ['D:\\1PY\\Day23', 'D:\\1PY', 'D:\\python\\python36.zip', 'D:\\python\\DLLs',
    'D:\\python\\lib', 'D:\\python','D:\\python\\lib\\site-packages',
    'D:\\pycharm\\PyCharm 2018.2.4\\helpers\\pycharm_matplotlib_backend']
    sys.path.append("D:/2PY")
    print(sys.path)
    ['D:\\1PY\\Day23', 'D:\\1PY', 'D:\\python\\python36.zip', 'D:\\python\\DLLs',
     'D:\\python\\lib', 'D:\\python', 'D:\\python\\lib\\site-packages',
     'D:\\pycharm\\PyCharm 2018.2.4\\helpers\\pycharm_matplotlib_backend', 'D:/2PY']
    
    print(sys.platform)       # 返回操作系统平台名称
    win32
三. 序列化
    序列化就是把内存里的数据类型转变为字符串, 以使其能存储到硬盘或通过网络传输到远程, 因为硬盘或网络传输时只能接受bytes
    python中存在三种序列化的方案:
    1. pickle: 可以将python中的任意数据类型转化成bytes并写入到文件中, 同样也可以吧文件中写好的bytes转换回我们python的数据, 这个过程被称为反序列化
    2. shelve: 简单另类的一种序列化方案, 有点类似后面我们学到的redis, 可以作为一种小型的数据库使用
    3. json:将python中常见的字典, 列表转换成字符串, 是目前前后端数据交互使用频率最高的一种数据格式
四. pickle
    1. dumps()    把对象序列化成字节
    2. loads()    把字节反序列化成对象
    import pickle

class Cat():
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def catchMouse(self):
            print(self.name, "抓老鼠")

c = Cat("jerry", 18)
    
    bs = pickle.dumps(c)        # 把对象序列化
    print(bs)                   # 二进制格式
    
    cc = pickle.loads(bs)           # 把二进制反序列化成对象
    cc.catchMouse()
    # jerry 抓老鼠
    
    3. dump()    把对象序列化写入文件
    4. load()    把文件中的内容反序列化成对象
    with open("cat", mode = "wb") as f:
        pickle.dump(c, f)

with open("cat", mode = "rb") as f:
        cc = pickle.load(f)
        cc.catchMouse()
    # jerry 抓老鼠
    pickle还支持多个对象的导入
    lst = [Cat("jerry", 19), Cat("tommy", 20), Cat("alpha", 21)]
    with open("catt", mode = "wb") as f:
        for el in lst:
            pickle.dump(el, f)          # 把对象写入到文件中
    
    with open("catt", mode = "rb") as f:
        for i in range(len(lst)):
            cc = pickle.load(f)            # 从文件中读取对象
            cc.catchMouse()
    上面的写法不太好, 因为在读的时候, 并不知道有多少对象要读,
    最好是把要写的多对象装入一个列表里
    with open("cattt", mode = "wb") as f:
        pickle.dump(lst, f)
    
    with open("cattt", mode = "rb") as f:
        lst = pickle.load(f)
    for el in lst:
        el.catchMouse()
五. json  https://www.cnblogs.com/loleina/p/5623968.html
    全称: javascript object notation jr对象简谱, 是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式
    javascript中的json类似python中的字典
    python: True, False, None
    json: true, false, null
    我们的程序时python写的, 但是前端是在JS那边解析json的, 所以, 我们需要把程序产生的字典转化成json格式的json串, 字符串
    1.dumps()    把对象序列化成json
    2.loads()    把json反序列化成对象
    dic = {"a": "女王", "b": "萝莉", "c": "小清新"}
    s = json.dumps(dic, ensure_ascii=False)     # 把字典转化成字符串

  # ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示

print(s)
    {'a': '女王', 'b': '萝莉', 'c': '小清新'}
    dic = json.loads(s)
    print(type(dic), dic)
    <class 'dict'> {'a': '女王', 'b': '萝莉', 'c': '小清新'}
    3.dump()    把对象序列化写入文件
    4.load()    把文件中的内容反序列化成对象
    lst = [{"a": 1}, {"b": 2}, {"c": 3}]
    # 写入
    with open("test.json", mode = "w", encoding = "utf-8") as f:
        for el in lst:
            s = json.dumps(el, ensure_ascii=True) + "\n"
            f.write(s)
    # 读取
    with open("test.json", mode = "r", encoding = "utf-8") as f:
        for line in f:
            dic = json.loads(line.strip())
            print(dic)
 # 两个函数的唯一区别就是dump把python对象转换成json对象生成一个fp的文件流,而dumps则是生成了一个字符串

参数设置,格式化输出学习一下: https://www.cnblogs.com/Eva-J/articles/7228075.html#_label9

转载于:https://www.cnblogs.com/guyannanfei/p/10188036.html

Python基础23_os,sys,序列化,pickle,json相关推荐

  1. python基础(17)之 JSON

    Python JSON JSON 是一种用于存储和交换数据的语法.JSON 是文本,用 JavaScript 对象表示法编写. Python 有一个名为 的内置包json,可用于处理 JSON 数据. ...

  2. Python基础教程:字典和Json

    字典是键/值对构成的集合,字典通过大括号来创建,字典的键是字符串,而值可以是任何数据对象. 字典有两个重要的特征: 字典是无序的,字典项没有特定的顺序,只能通过键来获取值: 字典是可变的,支持原处修改 ...

  3. python基础 -23- 模块(random,chardet,os,sys,copy,time,datetime,pytz,pickle,json,MD5,SHA-1,shutil,re等)

    为什么是模块?  在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.  为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含 ...

  4. Python基础知识点拾遗---文件IO(os、filecmp、shutil库)、sys库、序列化(pickle)、类

    Python基础知识点拾遗 文件IO 文本 目录 os 获取文件的创建.修改及最近访问时间 获取当前文件的大小 获取当前的登录用户名称 获取当前的cpu核数 调用操作系统底层的random生成器 sh ...

  5. Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json pickle 数据序列化

    一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...

  6. python基础之 序列化,os,sys,random,hashlib

    1.序列化 什么是序列化? 是将对象的状态信息转化为可以存储或传输的过程. 简单来说序列化就是一种用来处理对象流的机制.所谓对象流也就是将对象的 内容进行流化,流的概念这里不用多说(就是I/O).我们 ...

  7. python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...

    一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...

  8. python中常用的序列化模块_第六章 常用模块(5):python常用模块(序列化模块:pickle,json,shelve,xml)...

    6.3.7 序列化模块 (pickle,json,shelve,xml) 文件写入,数据传输时,我们都是以字符串形式写入的(因为字符串可以encode成bytes). 那其他类型(比如字典,列表等)想 ...

  9. python建立数据库并序列化_Python之数据序列化(json、pickle、shelve)

    一.python类型数据和JSON数据格式互相转换 pthon 中str类型到JSON中转为unicode类型,None转为null,dict对应object 二. 序列化/反序列化 将对象转换为可通 ...

最新文章

  1. 翻译下 golang package time
  2. C++ 数字、string 简便互转
  3. mysql定制化_【MySQL技巧】定制你的MySQL命令行-阿里云开发者社区
  4. 在Spring中使用JDBCJobStore配置Quartz
  5. 卡内基梅隆计算机专业,详解卡内基梅隆大学计算机学院
  6. 刘德华2007新歌《一》歌词及在线试听地址
  7. java除了android,Java中是否有类似android中的android.os.Handler的类?
  8. Spatial-Channel Sequeeze Excitation (SCSE)-8-June-2018【论文理解】
  9. pads 2007的概述
  10. 430单片机实现三人投票表决器_基于51单片机的三人表决器设计.doc
  11. linux搭建虚拟ftp,linux下搭建ftp服务器(虚拟用户)
  12. 3Dmark2006真让人郁闷!
  13. NOJ-1148-石子合并
  14. 用html画一个企鹅图案的代码,6张思维导图,帮你搞定html、css(css画QQ企鹅)
  15. 国密PSAM卡与CPU(用户卡)操作过程 小结
  16. 香港服务器需要如何来维护呢?
  17. 如何安装打印机驱动程序
  18. 移动硬盘无法读取,也无法显示?看高手是怎么恢复的
  19. 2022年5月26日:用C#生成.NET应用程序--创建新的.NET项目并使用依赖项(部分没看懂。)
  20. 25. 获取员工其当前的薪水比其manager当前薪水还高的相关信息

热门文章

  1. Kamailio v4.4.6 发布,开源 SIP 服务器
  2. 《算法导论》读书笔记--第三章 函数的增长
  3. HTML5 localStorage本地儲存
  4. MSSQL数据库安全防范学习笔记
  5. Exchange Server 2007 移动邮件
  6. 小程序web开发框架-weweb介绍
  7. 【iCore3 双核心板】例程二十一:LAN_TCPS实验——以太网数据传输
  8. Hadoop SequenceFile BLOCK压缩类型写入数据机制
  9. 排序算法(一) 冒泡排序
  10. ExtJS FormPanel不执行校验