1. 程式人生 > >python第八章:讀寫檔案-學習記錄

python第八章:讀寫檔案-學習記錄

一、檔案與檔案路徑

  1. 將單個檔案和路徑上的資料夾名稱的字串傳遞給os.path.join(),它就會返回一個檔案路徑的字串,包含正確的路徑分隔符(根據所在的作業系統windown linux 或者mac)
  2. os.getcwd()獲取當前工作路徑, os.chdir()改變當前路徑到指定路徑,指定目錄不存在會報錯。os.makedirs()函式建立新資料夾()
     
    dir_path = os.getcwd()
    print(dir_path)
    new_path = os.chdir("F:\\workspace\\gitSpace")
    print(os.getcwd())
    
    結果是:
    F:\workspace\gitSpace\testForStudy
    F:\workspace\gitSpace
  3. 絕對路徑:總是從根資料夾開始
    相對路徑:它相對於程式當前的工作目錄。
  4. os.path.relpath(path,start)將返回從start路徑到path的相對路徑的字串。
    os.path.abspath(path)將返回引數的絕對路徑的字串,是將相對路徑轉換成絕對路徑的簡便方法
    os.path.isabs(path)如果引數是一個絕對路徑,就返回True,如果引數是一個相對路徑,就返回False
    os.path.dirbame(path)將返回path引數中最後一個斜杆之前的所有內容的字串
    os.path.basename(path)將返回path引數中最後一個斜杆之後的所有內容
    os.path.split()獲取目錄名稱的基本名稱,返回的是兩個字串的元組。注意:它不會接受一個檔案路徑並返回每個問佳佳的字串的列表。

    os.path.sep: 路徑分隔符,將路徑分割成列表形式
    tmp = "F:\\workspace\\gitSpace\\git操作步驟.txt"
    print("-----------------------")
    print(os.path.dirname(tmp))
    print(os.path.basename(tmp))
    print(os.path.split(tmp))
    
    結果是:
    F:\workspace\gitSpace
    git操作步驟.txt
    ('F:\\workspace\\gitSpace', 'git操作步驟.txt')

     

  5. os.path.getsize(path)將返回path引數中檔案的位元組數。
    呼叫os.listdir(path)將返回檔名字串的列表,包含path引數中的每個檔案
    os.path.exists(path)判斷指定的檔案或者資料夾是否存在
    os.path.isfile(path)如果path引數存在,並且是一個檔案,則返回True,否則返回false
    os.path.isdir(path)path引數存在,並且是否是一個資料夾,將返回True,否則返回false
  6. shelve模組:讀寫檔案的3個步驟:
    呼叫open()函式,返回一個File物件
    呼叫File物件的read()或者write()方法
    呼叫File物件的close()方法,關閉該檔案
  7. read()方法返回整個檔案的內容為一個字串。
    readlines()方法,將文字的每一行讀取為一個字串,然後返回一個列表。
    問題:
    file_path = os.getcwd()
    file_conf = file_path + '/1.conf'
    
    f = open(file_conf, 'r+')
    
    # print(f.read())
    print("--------------------")
    print(f.readlines())
    f.close()
    
    如果f.read()和f.readlines()同時使用,readlins()是沒有返回值的,只有註釋掉上面的才會有返回值

     

  8. 寫入檔案, w 或者a模式
    w模式是模組,a模式是追加,沒有的檔名會自動建立。

  9. shelve模組儲存變數:可以在程式中新增儲存和開啟的功能。shelve開啟的值不需要用讀模式或者寫模式,因為它開啟後即能讀也能寫。檔案中儲存的值有keys()和values()方法

  10. 用pprint.pfromat()函式儲存變數:儲存的格式和pprint.pprint()返回同樣文字字串,但是不列印,在語法是正確的python程式碼,儲存在一個變數中,存入python檔案,以便將來使用。
     

    import pprint
    import os
    
    cats = [{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}]
    
    pprint.pprint(cats)
    
    tmp = pprint.pformat(cats)
    # print(tmp)
    dir_path = os.getcwd() + '/'
    
    fileObj = open(dir_path+ 'myCats.py', 'w')
    fileObj.write('cats =' + tmp + '\n')
    fileObj.close()
    
    import  myCats
    
    print(myCats.cats)
    print(myCats.cats[0])
    
    
    結果:
    [{'desc': 'chubby', 'name': 'Zophie'}, {'desc': 'fluffy', 'name': 'Pooka'}]
    [{'desc': 'chubby', 'name': 'Zophie'}, {'desc': 'fluffy', 'name': 'Pooka'}]
    {'desc': 'chubby', 'name': 'Zophie'}

     對於大多數的應用,利用shelve模組來儲存資料,是將變數儲存到檔案的最佳方式。只有基本資料累心個,如整型int,浮點型,字串,列表和字典,可以作為簡單文字寫入檔案,例如,File物件就不能夠編碼為文字。

  11. 總結:
    檔案被組織在資料夾(也稱為目錄), 路徑描述了一個檔案的位置。
    執行在計算機上的每個程式都有一個當前工作目錄,它讓你相對於當前的位置指定檔案路徑,而非總是需要完成的路徑(也稱為絕對路徑)。
    os.path模組中包含許多函式,用於操作檔案路徑。