• 第三十五篇 os模块、sys模块、json模块、pickle模块


    一、os模块

    os模块和操作系统交互,主要用于文件操作

    import os
    
    # test.py文件中
    
    # os.mkdir() 一个路径参数和一个字符串参数。如果有路径参数,则在该路径下创建一个新的文件夹;如果无路径参数,则在当前文件的同级路径下创建一个新的文件夹
    os.mkdir('king')  # 创建了和test.py文件同级目录下的名为king的文件夹
    
    # os.removedirs() 一个路径参数。递归往上移除空文件夹(无法移除.py的空文件)
    os.removedirs(r'B:pythontestsys模块kongwenjianjia')
    
    # os.rmdir() 一个路径参数。移除指定的空文件夹
    os.rmdir(r'B:pythontestsys模块kongwenjianjia')
    
    # os.listdir()  一个路径参数。列出文件夹内的所有文件名和隐藏文件名(只打印该文件夹下的同级文件名,不会打印同级文件的下一级文件名)
    res = os.listdir(r'B:pythontest')  # 得到一个生成器
    for s in res:
        print(s)
        
    # os.remove()  一个路径参数。删除指定文件(无法删除文件夹)
    os.remove(r'B:pythontestjsonandoswenjian.py')
    
    # os.environ 打印环境变量。environ相当于一个变量名,用于接收环境变量
    print(os.environ)
    
    # os.path.dirname(__file__)  获取当前文件的路径
    os.path.dirname(__file__)
    os.path.dirname(os.path.dirname(__file__))   # 获取当前文件的上一级文件的路径
    
    # os.path.abspath()  一个路径参数。获取文件的绝对路径
    os.path.abspath(__file__)  # 获取当前文件的绝对路径
    os.path.abspath(r'B:pythontest','king.py')  # 获取指定文件的绝对路径
    
    # os.path.append() 一个路径参数。用于执行文件添加环境变量
    os.path.append(r'B:pythontestaaam1.py')  # 将m1的查找路径添加到执行文件的环境变量中,可以用于导入模块m1中的函数
    
    # os.path.exists() 一个路径参数。判断文件是否存在,存在返回True
    bool_res = os.path.exists(r'B:pythontestaaam1.py')
    print(bool_res)
    
    # os.path.join()  两个路径参数。拼接文件路径
    path_res = os.path.join(r'B:pythontest','king.py')
    print(path_res)  # B:pythontestking.py
    
    # os.path.getsize()  一个路径参数。计算文件大小
    file_size = os.path.getsize(r'B:pythontest6.10练习.py')
    print(file_size)   # 1084
    
    # os.walk()  一个路径参数。打印文件夹下所有文件夹和文件
    ress = os.walk(r'B:pythontest')   # 得到一个生成器
    for st in ress:
        print(st)
    

    二、sys模块

    作用:与python解释器进行交互

    import sys
    
    # sys.argv[0]表示代码本身文件路径,当我们在cmd中使用它时,可以把它看成一个从程序外部获取参数的桥梁。当我们获得多个参数时,获得是一个列表。其实可以把sys.argv看作是一个列表,而我们可以通过索引取到想要的值
    sys.argv[0]  # 表示代码所在的文件本身,也即是sys.argv的第一个值
    sys.argv[1]  # 取第二个元素
    sys.argv[0:]  # 取出所有元素
    

    当我们用sys.argv[0:]时,如下图

    # sys.hexversion  获取解释器版本信息
    print(sys.hexversion)
    
    # sys.stdout  c语言写的。print就是用它写的
    # sys.stdout.write()    
    
    # sys.stdin      用c写的。input用它写的
    # sys.stdin.read()    # 输入字符有限 
    
    # sys.path
    # sys.path.append()  一个路径参数。添加环境变量
    sys.path.append(r'B:pythontestking.py')  # 在执行文件的搜索路径中添加路径
    

    三、json模块

    一般保存字典类型的数据

    import json
    

    1.序列化:将数据按规定格式,从内存写入到硬盘的过程

    2.反序列化:将数据从硬盘读取到内存的过程

    3.所有的语言都有json文件,json文件可用于跨平台/跨语言传输数据

    dump和load

    1.json文件保存,以字符串形式存入

    # 字典、列表、字符串、bool、None、数字类型
    dic = {'name':'king'}
    
    with open('info.json','w',encoding='utf8') as fw:
    	json.dump(dic,fw)
    

    2.打开json文件,存之前是什么格式,取出来就是什么格式,一般存之前是字典,所以取出的多是字典形式的数据

    with open('info.json','r',encoding='utf8') as fr:
    	json.load(fr)
    

    四、pickle模块

    pickle模块支持python中的任意数据类型存成pickle文件,所以不能跨平台/跨语言(不同平台的函数一定是不同的),pickle模块序列化的过程是以二进制形式转化的

    import pickle
    
    def func():
    	print('hello')
    	
    # 由于pickle传输的是二进制形式的数据,所以应该用b模式来读写
    with open('func.pkl','wb') as fw:
    	pickle.dump(func,fw)
    	
    # 读取文件
    with open('func.pkl','rb') as fr:
    	pickle.load(fr)
    
  • 相关阅读:
    小白学开发(iOS)OC_ 使用继承来扩充类(2015-08-07)
    UI组件之TextView及其子类(三)ToggleButton和Switch
    C++智能指针--shared_ptr
    HDU 1013 Digital Roots 题解
    对touch事件传递的简单理解
    【LeetCode-面试算法经典-Java实现】【096-Unique Binary Search Trees(唯一二叉搜索树)】
    Cocos2d-x 坐标系
    hdu1518 Square
    servlet3.0新特性
    OGNL表达式
  • 原文地址:https://www.cnblogs.com/itboy-newking/p/11038871.html
Copyright © 2020-2023  润新知