zoukankan      html  css  js  c++  java
  • Python基础—09-文件操作

    文件操作

    目录管理(os)

    • system:执行系统命令

      # 清空屏幕
      # os.system('cls')
      # 弹出计算器程序
      os.system('calc')
    • name:查看系统名称

      • nt:windows内核
      • posix:类unix内核
    • 获取环境变量:

      # print(os.environ['path'])
      # print(os.environ.get('path2', 'abc'))
      # 这里是对上面的封装
      # print(os.getenv('path2', 'hello'))
      print(os.getenv('XXX'))

      终端操作:

      设置:set XXX=yyy

      获取:set XXX

    • getcwd:获取当前工作目录

      print(os.getcwd())
    • mkdir:创建目录(不能带中间目录)

      os.mkdir('hello')
    • makedirs:创建目录(会自动创建中间目录)

      os.makedirs('a/b/c')
    • rmdir:删除目录(只能删除空目录)

      os.rmdir('hello')
    • rename:重命名(可以是文件或目录)

      os.rename(原名称, 新名称)
    • stat:查看文件信息(也可以是目录)

      os.stat(文件名)
    • 相对目录/绝对目录

      相对目录:有参考的目录
          . 表示当前目录,通过‘./’可以省略
          .. 表示上一级目录,上上一级目录这样表示:../../
          
      绝对目录:windows中以盘符开头,类unix中以'/'开头的目录
      
      目录分隔符:
          windows:/ 或 
          类unix:/
          建议:统一使用 /
          
      说明:在文件操作时,相对目录和绝对目录都可以
    • listdir:查看目录的直接子文件

      os.listdir(目录)
    • path

    from os import path
    
    # 目录拼接
    # print(path.join('abc/def', 'hello.py'))
    
    # 提取目录
    # print(path.dirname('abc/def/hello.py'))
    
    # 提取文件名
    # print(path.basename('abc/def/hello.py'))
    
    # 切割目录与文件名
    # print(path.split('abc/def/hello.py'))
    # dir, name = path.split('abc/def/hello.py')
    # print(dir, name)
    
    # 切割文件名与后缀
    # name, ext = path.splitext('hello.py')
    # print(name, ext)
    
    # 判断文件是否存在(也可以判断目录)
    # print(path.exists('hello.py'))
    # print(path.exists('aa'))
    
    # 判断是否是目录文件
    # print(path.isdir('hello.py'))
    # print(path.isdir('aa'))
    
    # 判断是否是普通文件
    # print(path.isfile('hello.py'))
    # print(path.isfile('aa'))
    
    # 获取文件大小,仅限于普通文件
    print(path.getsize('01-os.py'))
    # 不可以是目录(大小始终为0)
    print(path.getsize('aa'))

    练习:实现目录大小的统计,需要使用递归

    文件操作

    • 打开文件(open)

      • 示例
      fp = open('00-test.txt', 'r')
      • 参数
      参数(file):操作的文件名
      参数(mode):打开方式
      参数(encoding):指定编码方式,通常不用指定,系统会自动识别
      • 打开方式
      r:只读方式,文件不存在会报错
      w:只写方式,文件不存在会创建,文件存在删除后再创建
      a:追加方式,文件不存在会创建,文件存在直接打开(不会清空),只能向最后追加内容
      r+:在r方式上添加写的功能
      w+:在w方式上添加读的功能
      a+:在a方式上添加读的功能
      
      在上面模式上添加一个字符b,表示二进制方式打开:rb、wb、ab、rb+、wb+、ab+
      说明:没有b的方式文件读写都是str类型,带b的方式文件读写都是bytes
      • 编码方式
      ASCII:美国信息交换标准代码
      ansi:扩展的ASCII
      gb2312:中国的ansi
      gbk:扩充的gb2312
      
      unicode:万国码,将全部国家的字符全部包含进去进行统一编码
      utf-8:可变长度的unicode实现方案,而且对中文支持友好
      • bytes类型
      s = b'hello'
      print(s)
      print(type(s))
      
      
      # 编码:str => bytes
      s = 'hello'.encode('utf-8')
      print(s)
      
      # 解码:bytes => str
      b = s.decode('utf-8')
      print(b)
    • 关闭文件

      fp.close()
    • 文件读写

      # 判断是否可读
      # print(fp.readable())
      # 读取指定长度内容
      # ret = fp.read(3)
      
      # 一次读取一行
      # print(fp.readline())
      
      # 读取所有内容,返回一个列表,一行一个元素
      # lines = fp.readlines()
      
      # 判断是否能够进行写操作
      # print(fp.writable())
      # fp.write('world')
      # fp.write(b'gogogo')
    • 文件指针

      # 获取文件指针的位置
      print(fp.tell())
      
      # 设置指针偏移
      # 参数1:偏移量
      # 参数2:参考位置,0表示开头,1表示当前,2表示末尾
      # 带b的方式打开,设置偏移没有问题
      # 不带b的方式打开,设置偏移会报错
      fp.seek(-5, 1)
    • 文件删除

      os.remove(文件名)

      练习:(递归)删除一个目录

  • 相关阅读:
    超赞!不容错过的5款实用网页开发和设计工具
    如何从平面设计转行到UI设计?
    线段树
    RMQ
    Splay
    Treap
    *模板--矩阵
    最小生成树
    hash
    ac自动机
  • 原文地址:https://www.cnblogs.com/swjblog/p/9671139.html
Copyright © 2011-2022 走看看