python中對文件的簡單操作

目錄管理(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(文件名)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章