標籤:art 擴充 標識符 指標 簡介 use 記憶體 set 二進位
一.檔案操作
在磁盤上讀寫檔案的功能都是由作業系統提供的,現代作業系統不允許普通的程式直接操作磁碟。所以,讀寫檔案就是請求作業系統開啟一個檔案對象(通常稱為檔案描述符),然後,通過作業系統提供的介面從這個檔案對象中讀取資料(讀檔案),或者把資料寫入這個檔案對象(寫檔案)。
1.讀檔案
要以讀檔案的模式開啟一個檔案對象,使用Python內建的open()函數,傳入檔案名稱和標示符。
$ cat test.txt$ This is a file
$ life is short
$ use python------------------------f = open("test.txt",‘r‘) #開啟test.txt檔案
檔案開啟成功之後,開始讀取檔案內容,我們可以使用read()來一次性將檔案內容讀到記憶體中。
print (f.read())>>This is a file>>life is short>>use python
調用read()會一次性讀取檔案的全部內容,同樣的還有readlines(),一次性將檔案讀入記憶體中並逐行返回一個列表,如果讀取一個大檔案,這個時候記憶體可能就會撐不住了,因為可以通過反覆調用 read(size)來達到目標,當然,你也可以將檔案逐行讀取到記憶體中。
for line in f: print(line.strip())>>This is a file>>life is short>>use python
這種方式等同於readline(),對於大檔案的處理,更加高效。但當記憶體足夠開啟一個完成的檔案時,read()和readlines()則更有效率,readlines()更加適用於設定檔。
因此,我們需要根據不同的情況,選擇最優的方式來進行讀操作。
檔案操作的最後一步則是調用close()方法來關閉檔案,檔案使用完畢後必須關閉,因為檔案對象會佔用作業系統的資源,並且作業系統同一時間能開啟的檔案數量也是有限的。
當然,為了避免某些時候忘記關閉檔案,python提供了一個更加簡介的檔案開啟檔案——with語句。
with open ("test.txt",‘r‘) as f: print(f.read())
2.寫檔案
寫檔案和讀檔案是一樣的,唯一區別是調用open()函數時,傳入標識符‘w‘或者‘wb‘表示寫文字檔或寫二進位檔案
with open ("test.txt",‘w‘) as f: f.write("hello world")--------------------------------------$ cat test.txt$ hello world
你可以反覆調用write()來寫入檔案,但是務必要調用f.close()來關閉檔案。當我們寫檔案時,作業系統往往不會立刻把資料寫入磁碟,而是放到記憶體緩衝起來,閒置時候再慢慢寫入,如果想讓內容即時寫入,可以使用flush()。只有調用close()方法時,作業系統才保證把沒有寫入的資料全部寫入磁碟。忘記調用close()的後果是資料可能唯寫了一部分到磁碟,剩下的丟失了。所以,還是用with語句來得保險。
3.檔案操作標識符
r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
r+ 以讀寫方式開啟檔案。檔案指標將會放在檔案的開頭。
w 以唯寫方式開啟檔案。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
w+ 以讀寫方式開啟檔案。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a 以追加方式開啟檔案。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
a+ 以讀寫入模式開啟檔案。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。
4.檔案操作其他小tips
tell(): 列印當前位置
f = open("test",‘r‘)print(f.read(10))print(f.tell())f.close()>>This is a >>10
seek(offset [,from])方法改變當前檔案的位置。Offset變數表示要移動的位元組數。From變數指定開始移動位元組的參考位置。
如果from被設為0,這意味著將檔案的開頭作為移動位元組的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那麼該檔案的末尾將作為參考位置。
f = open("test",‘r‘)f.seek(10,0)print(f.read())f.close()
>>file>>life is short>>use python
二.字元編碼與轉碼
參考文章:
http://www.cnblogs.com/yuanchenqi/articles/5956943.html
三.函數基礎
函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可
特性:
1.減少重複代碼
2.增加可擴充性
3.方便日後維護
1.定義一個函數
def hello(): #定義一個函數名為hello的函數 print("hello world\n")hello() #調用hello()函數>>hello world
2.函數參數
形參變數只有在被調用時才分配記憶體單元,在調用結束時,即刻釋放所分配的記憶體單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數
實參可以是常量、變數、運算式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值
未待完續...
python學習筆記:基礎Day03