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

    友情提醒:中間使用的所有文件目錄的判斷都需要進行拼接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM