python第八章:讀寫檔案-學習記錄
阿新 • • 發佈:2018-12-16
一、檔案與檔案路徑
- 將單個檔案和路徑上的資料夾名稱的字串傳遞給os.path.join(),它就會返回一個檔案路徑的字串,包含正確的路徑分隔符(根據所在的作業系統windown linux 或者mac)
- 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
- 絕對路徑:總是從根資料夾開始
相對路徑:它相對於程式當前的工作目錄。 - 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')
- 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 - shelve模組:讀寫檔案的3個步驟:
呼叫open()函式,返回一個File物件
呼叫File物件的read()或者write()方法
呼叫File物件的close()方法,關閉該檔案 - 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()是沒有返回值的,只有註釋掉上面的才會有返回值
-
寫入檔案, w 或者a模式
w模式是模組,a模式是追加,沒有的檔名會自動建立。 -
shelve模組儲存變數:可以在程式中新增儲存和開啟的功能。shelve開啟的值不需要用讀模式或者寫模式,因為它開啟後即能讀也能寫。檔案中儲存的值有keys()和values()方法
-
用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物件就不能夠編碼為文字。
-
總結:
檔案被組織在資料夾(也稱為目錄), 路徑描述了一個檔案的位置。
執行在計算機上的每個程式都有一個當前工作目錄,它讓你相對於當前的位置指定檔案路徑,而非總是需要完成的路徑(也稱為絕對路徑)。
os.path模組中包含許多函式,用於操作檔案路徑。