文件路徑了解完之后,我們接著來看這個open功能。
前面我們知道只要一個名字加一個括號,就意味著觸發(fā)了一個功能的運行,只要是一個功能運行,就可能有返回值對吧。
比如我們前面學過的input(),int(),list()還有print(),當然print是沒有返回值的。
現(xiàn)在我們看這個open功能有沒有返回值。直接把她賦值給一個變量f,然后打印f。
f = open('date/a.txt') # 相對路徑
print(f)
出來了這么一串內(nèi)容。
其實它是一種新的數(shù)據(jù)類型,叫文件類型,我們前面學的字符串、列表、字典哪些是基本數(shù)據(jù)類型,現(xiàn)在我們遇到了一種新的類型,叫文件類型。
既然它是一種數(shù)據(jù)類型,那它和我們前面學過的a=int(18),就是一樣的了。
它會造一個整型18出來,然后申請內(nèi)存空間,把值存進去。但是open就沒那么簡單了。
open除了要造一個變量值之外,他還會向操作系統(tǒng)發(fā)一個請求,告訴操作系統(tǒng)說:‘’把a.txt這個文件給我打開?!?/p>
操作系統(tǒng)就會專門開一塊內(nèi)存空間,來打開這個文件。
所以f=open就會涉及到兩方面的資源占用,站在變量的角度,f等于了一個open的返回值,我們就現(xiàn)在就把這個返回值當做一種數(shù)據(jù)類型看待就行了,或者叫文件對象。
然后這個文件對象它會對應操作系統(tǒng)里面一個打開的文件,而操作系統(tǒng)就會把打開的這個文件映射到具體的硬盤空間。
所以我們以后寫代碼來操作這個文件對象的時候,其實就是在向操作系統(tǒng)的那個真正的文件發(fā)請求。
操作系統(tǒng)就會把我們對文件的讀或者寫操作再轉(zhuǎn)成具體的硬盤操作。磁盤怎么轉(zhuǎn),磁頭臂怎么擺等等。
然后open功能還有兩個模式我們前面講了,一個位是控制讀寫操作r、w、a、+,一個是控制杜秀娥內(nèi)容t模式和b模式。
這兩個模式如果不指定,它默認就死r模式和t模式。
r模式也就是只讀模式,t模式就是以字符串為單位的。用的時候這兩個模式都是一起指定的,直接在后面寫mode=rt。
所以我們不指定的話也及時rt模式,然后我在下面寫f.read()。
f = open('date/a.txt', mode='rt')
f.read()
f我們剛剛說了是一個文件對象,然后我們點了一個read加括號,這是文件對象的功能,看名字我們大概知道了,它的作用就是讀取這個文件的內(nèi)容。
它會向操作系統(tǒng)的這個具體的文件發(fā)請求,然后操作系統(tǒng)會把數(shù)據(jù)從硬盤讀入內(nèi)存,然后再把數(shù)據(jù)交給我們的程序,也就是這個f.read()。
所以這個f.read()是有返回值的,這個返回值就是我們問加減的內(nèi)容。
這個文件呢哦讓到底是字符串格式的還是二進制格式的,取決于我們前面說的控制讀寫內(nèi)容的模式,我們指定是t模式,當然不指定也是t模式。
也就是說這個返回值應該是字符串,我把它賦值給一個新的變量res,然后打印res。
f = open('date/a.txt', mode='rt') # 相對路徑
res = f.read()
print(res)
到這里先不要運行,我們下章接著講。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 讀取文件