2016年7月26日 星期二

Python 的檔案讀寫功能

Python 對於檔案處理的方法
  • 檔案處理方式:
    • 讀寫檔案內容!
    • 操作檔案目錄系統!(下一章節)
    • 執行檔案程式!(下一章節)
    • Python 常用的檔案讀寫函數:
      函數名稱說明
      write(資料內容)寫入資料到檔案內
      read()
      read(字元數量)
      一次讀出所有資料內容
      讀出多少字元數量
      readline()每次只讀取一行
      readlines()讀取全部內容,但每次只回傳一行
  • Python 開啟檔案內容的基本格式:
    檔案物件變數名稱 = open(檔案名稱, 檔案操作類型)
    
    ##檔案操作類型,共兩個字元###
    ####第一個字元####
    r : 讀取
    w : 寫入檔案(可新增檔案)
    x : 寫入檔案(不可新增檔案)
    a : 寫入檔案(附加在檔案結尾處)
    
    ####第二個字元####
    t : 代表文字
    b : 代表二進位
    
快速測試:
  1. 開啟互動式指令:
    #python3
    Python 3.4.3 (default, Jan 26 2016, 02:25:35)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
  2. 對檔案進行寫入文字的動作:
    >>> text1 = "This is a test files!"
    >>> fileOut = open('test1.txt','wt')
    >>> fileOut.write(text1)
    21
    >>>quit()
    #
    
  3. 驗證寫入結果:
    $ cat test1.txt
    This is a test files!
    
  4. 編寫讀取檔案的程式:
    #vim readFiles.py
    class readFiles():
       def __init__(self):
          self.__name = ""
    
       def readFiles(self,name):
          self.__files = open(name,'rt').read()
          return self.__files
    
    
    testfiles = readFiles()
    print(testfiles.readFiles("test1.txt"))
    
  5. 執行程式:
    #python3 readFiles.py
    This is a test files!
    
  6. 修改一下檔案的程式:
    #vim readFiles.py
    class readFiles():
       def __init__(self):
          self.__name = ""
    
       def readFiles(self,name):
          self.__files = open(name,'rt')
          po = self.__files.read()
          self.__files.close()
          return po
    
       def readLines(self,name):
          self.__lines = open(name,'rt')
          lin = len(self.__lines.readlines())
          self.__lines.close()
          return lin
    
    testfiles = readFiles()
    print(testfiles.readFiles("test1.txt"))
    print("test1.txt has ",testfiles.readLines("test1.txt")," lines")
    
  7. 執行程式:
    #python3 readFiles.py
    This is a test files!
    Hello World !!
    This is the 3rd lines!!
    
    test1.txt has  3  lines