zoukankan      html  css  js  c++  java
  • python 目录管理与文件管理

    目录管理(os)

    • system:执行系统命令

      # 执行系统命令
      os.system('cls')
    • name:获取操作系统名称

      # 操作系统名称,nt代表Windows, posix代表类unix
      print(os.name)
    • environ

      # 获取环境变量
      env = os.environ
      ​
      print(env['path'])
      print(env.get('path'))
      print(env.get('HELLO'))
    • getcwd:# 获取当前工作目录

      print(os.getcwd())
    • mkdir:创建目录

      # 创建目录,只能是单层目录
      # os.mkdir('hello')
      # 这里会失败
      # os.mkdir('a/b/c')
    • makedirs:创建目录,会创建中间目录

      
      
      # 会创建中间目录
      # os.makedirs('a/b/c')
    • rmdir:删除目录,只能删除空目录

      
      
      # 删除目录,只能删除空目录
      # os.rmdir('hello')
      # 当目录中有其他文件或目录时删除失败
      # os.rmdir('a')
    • rename:修改文件名(可以是目录)

      # 修改名字,可以是目录 (old, new)
      # os.rename('a', 'c')
      # 也可以修改文件名
      # os.rename('test.py', '123.py')
    • stat:查看文件信息

      
      
      # 查看文件信息
      print(os.stat('123.py'))
    • listdir:列出直接子文件

      # 列出直接子文件
      print(os.listdir('c'))
    • 相对目录、绝对目录


      相对目录:就是有参考的目录
      . 表示当前目录,通常 ./ 可以省略
      .. 表示上一级目录

      绝对目录:windows中以某个盘符开头,类unix系统中以'/'开头的目录

      目录分隔符:
      类unix:/
      windows:/ 或
      建议:统一使用 '/' 表示

      说明:在文件操作时,使用相对目录和绝对目录都可以
    • path

      
      
      from os import path
      ​
      # 拼接目录
      print(path.join('abc/def', '123.py'))
      ​
      # 提取文件后缀(切割文件名与后缀)
      name, ext = path.splitext('789.py')
      print(name, ext)
      ​
      # 提取目录名(最后一个目录分隔符的前面内容)
      print(path.dirname('123/456/789.py'))
      ​
      # 提取文件名(包括后缀)
      print(path.basename('123/456/789.py'))
      ​
      # 切割文件名和目录
      print(path.split('123/456/789.py'))
      ​
      # 判断文件是否存在(可以是目录)
      print(path.exists('123.py'))
      ​
      # 判断是否是目录文件
      print(path.isdir('c'))
      ​
      # 判断是否是普通文件
      print(path.isfile('123.py'))
      ​
      # 获取普通文件大小
      print(path.getsize('01-os.py'))
      # 不可以获取目录大小,始终是0
      print(path.getsize('c'))

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

    文件管理

    • 打开文件(open)

      • 示例:

      
      
      fp = open('00-test.txt', 'r')
      • 参数:


      参数1:文件路径名
      参数2:打开方式
      参数3:编码格式,通常可以不指定,系统会自动识别处理
      • 打开方式:


      r:只读方式,文件不存在会报错
      w:只写方式,文件不存在创建文件,文件存在清空内容
      a:追加方式,文件不存在则创建,文件存在直接打开(不会清空内容),只能向最后追加内容
      r+:在r方式下添加写的功能
      w+:在w方式下添加读的功能
      a+:在a方式下添加读的功能

      在上面的模式上添加b,表示二进制方式打开:rb、wb、ab、rb+、wb+、ab+
      1.文件的读写数据全部是bytes类型,没有添加b的方式全部是str类型
      • 编码方式:


      ascii:美国信息交换标准代码
      ansi:扩展的ascii
      gb2312:中国的ansi
      gbk:扩展的gb2312

      unicode:是一套理论,实现方式不限
      utf-8:可变长度的unicode实现,对中文的支持比较友好
    • 关闭文件(close)

      # 关闭文件
      fp.close()
    • 文件读写

      
      
      # 读取指定长度内容
      # ret = fp.read(3)
      # 写入内容
      fp.write('hello')
      ​
      # 读取一行,包括换行符
      # print(fp.readline())
      # 读取所有行,返回一个列表
      print(fp.readlines())
      ​
      # 是否可读
      print(fp.readable())
      ​
      # 是否可写
      print(fp.writable())
    • 文件指针

      
      
      # 返回文件指针的操作位置
      print(fp.tell())
      ​
      # 设置偏移
      # 参数1:偏移量
      # 参数2:参考位置,0:开头,1:当前,2:末尾
      # 定位到末尾
      fp.seek(0, 2)

      带b的方式seek没有异常;不带b的时候,相对于当前位置无法偏移,相对于末尾只能偏移0

    • 文件删除

      import os
      os.remove('02-test.py')

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

    练习

    • 1.实现一个拷贝文件的功能,提醒:要考虑超大文件问题,如:依次读取1024字节,循环读取

    • 2.递归删除一个文件夹

    • 3.统计一个文件夹的大小

    • 4.拷贝一个文件夹

    • 5.移动一个文件夹

    • 6.目录整理

      • 一个目录中有各种文件,也有文件夹

      • 将所有的文件夹统一放到dir目录下

      • 将没有后缀的文件统一放到others目录下

      • 将有后缀的文件放到后缀名大写的文件夹下


      # 处理前
      test/
        dir1/
        dir2/
        1.py
        2.py
        3.txt
        4.pdf
        123
        456

      # 处理后
      test/
        DIR/
            dir1/
            dir2/
        PY/
            1.py
            2.py
        TXT/
            3.txt
        PDF/
            4.pdf
        OTHERS/
            123
            456

      友情提醒:中间使用的所有文件目录的判断都需要进行拼接。

  • 相关阅读:
    Js $.merge() 函数(合并两个数组内容到第一个数组)
    11.联结表---SQL
    函数作用域
    递归特性
    计算递归函数理解
    递归、问路函数
    全局变量用大写,局部变量用小写
    全局变量与局部变量
    函数形参和实参
    函数和过程
  • 原文地址:https://www.cnblogs.com/kiki5881/p/8550136.html
Copyright © 2011-2022 走看看