Python23 文件目录操作、序列化(json、pickle)

文件、目录操作 | 序列号

  • os:可以直接调用操作系统提供的接口函数
    • import os
    • 代码:
      ```PYTHON
      import os # 导入os模块调用操作系统
      SystemType = os.name # 查看当前系统类型:如果是posix,说明系统是Linux、Unix或Mac OS X,如果是nt,就是Windows系统。
      print('系统类型是:{0}'.format(SystemType))

      # 获取当前系统详细信息 ps:windows上不适用
      # SystemDetailed = os.uname()
      # print('系统详细信息如下:{0}'.format(SystemDetailed))

      # 查看系统的环境变量,返回一个字典dict
      Path = os.environ
      print(Path)
      # 获取某个变量的值
      print(Path.get('PATH'))
      ```
  • 操作文件和目录:操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中
    • 代码:
      ```PYTHON
      # 操作文件和目录

      # 查看当前目录的绝对路径
      AbsolutePath = os.path.abspath('.') # .(./) 代表当前目录,..(../)代表当前目录上级目录
      AbsolutePath1 = os.path.abspath('..')
      print(AbsolutePath,AbsolutePath1)

      # 在目录下新建目录
      # 1. 把新目录的路径表示出来
      os.path.join('.','newCatalog') # 将两个路径合成1个
      # 2. 创建一个目录
      os.mkdir('./newCatalog')
      print(os.path.abspath('/newCatalog'))

      # 删除目录
      os.rmdir('./newCatalog')

      # 拆分路径,后部分是最后级别的目录或文件名
      list = os.path.split('./学习笔记.md')
      print(list)

      # 直接得到文件扩展名
      Extensions = os.path.splitext('./学习笔记.md')
      print(Extensions)

      # 文件重名
      # 1. newCatlog 新建test.txt文件
      with open('./newCatlog/test.txt','w') as f:
      f.write('123')
      # 2.重命名
      os.rename('./newCatlog/test.txt','./newCatlog/test.java')

      # 删除文件
      os.remove('./newCatlog/test.java')

      # 过滤文件
      # 列出当前目录下所有的目录
      dirList = [x for x in os.listdir('../day25') if os.path.isdir(x)] # os.listdir(列出所有目录),os.path.isdir(目录) 判断是否是目录
      print(dirList)

      # 列出所有.py文件;
      # isfile(文件) 判断是否是文件
      fileList = [ x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py']
      print(fileList)

      # 实现windows dir
      def my_dir(Path):
      if not isinstance(Path,str):
      raise TypeError('Path 需是一个路径!')
      try:
      print(os.listdir(Path))
      except WindowsError:
      print('路径错误!')

      my_dir('C:/Windows')
      ```
  • 序列化:把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
    • 反序列化:把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
    • Python提供了pickle模块来实现序列化
      • 代码:
        ```PYTHON
        # 序列化
        import pickle
        d = dict(name='X.Tang',age=20,score=99) # dict
        pdumps = pickle.dumps(d) # pickle.dumps(字典) pickle.dumps()方法把任意对象序列化成一个bytes,然后,就可以把这个bytes写入文件
        print(pdumps) # 输出 b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00X.Tangq\x02X\x03\x00\x00\x00ageq\x03K\x14X\x05\x00\x00\x00scoreq\x04Kcu.'

        # pickle.dump()直接把对象序列化后写入一个file-like Object
        with open('dump.txt','wb') as f: # wb 写2进制文件
        pickle.dump(d,f)

        # 要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象 pickle.load()
        with open('dump.txt','rb') as f:
        d1 = pickle.load(f)
        print(d1) # 这个变量和原来的变量是完全不相干的对象,它们只是内容相同而已

        # json
        import json
        d = dict(name='X.Tang',age=18,score=66)
        # 转换成json
        jd = json.dumps(d)
        print(jd,type(jd))
        """
        dump()方法可以直接把JSON写入一个file-like Object。
        要把JSON反序列化为Python对象,用loads()或者对应的load()方法,
        前者把JSON的字符串反序列化,后者从file-like Object中读取字符串并反序列化:
        """
        ```

转载于:https://www.cnblogs.com/thloveyl/p/11481761.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值