學習筆記四 檔案讀寫,集合,元組,函式
一、檔案讀寫幾種模式總結:
讀模式: r 開啟不存在的檔案會報錯、不能寫(不能呼叫write方法),可以讀(能呼叫read方法)
寫模式: w # 1、開啟不存在的檔案,會新建一個檔案,但每次開啟都會清空原有檔案內容
# 2、不能讀(不能呼叫read方法),可以寫(能呼叫write方法)
追加模式 a # 1、開啟不存在的檔案,會新建,可以寫(可以呼叫write方法)
# 2、不能讀(不能呼叫read方法)
讀寫模式 r+ # 1、能寫能讀,但每次都是重頭寫入,會覆蓋原有的檔案內容
# 2、開啟不存在檔案的時候會報錯
寫讀模式 w+ # 1、能讀能寫
# 2、但讀不到內容,因為每次開啟w先把檔案內容清空
追加讀模式 a+ # 1、能讀能寫
# 2、每次讀的時候,檔案指標是在檔案末尾。如果需要重頭讀起,需要f.seek(0)將指標移到檔案開始,當檔案寫入資料後,在沒有關閉檔案前,此時寫入的資料還在記憶體中,沒有寫入磁碟,當檔案在其他地方開啟的時候,是看不到新寫入的資料,如果希望新寫入的資料立即生效寫入磁碟,需要用f.flush(),檔案末尾用f.tell()
讀取檔案內容三個方法:
比如有檔案test.txt
1.read():方法用於從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。
2.readline():一次讀取檔案的一行。如果檔案指標在檔案開始位置,則讀取的是第一行資料。
3.readlines():讀取檔案的所有行,並且以list形式返回
4.直接迴圈檔案物件:當檔案比較大的時候可以用此方法
檔案的寫操作:
1.write(str):引數必須是個字串,寫入的內容就是str
2.writelines(sequence):引數是一切可迭代的(字串,list,元組,set,dict)的物件,其執行原理是將sequence的內容以遍歷的方式依次讀取寫入
5.檔案操作小程式碼:監控日誌
6.檔案操作小程式碼:修改檔案
with 操作會自動呼叫close(),無需手動寫關閉檔案操作
第一種方式:全部讀取檔案的內容後修改其內容,將原有檔案內容刪除,然後將修改的內容直接複製寫進去
第二種方式(推薦):建立一個新的空檔案,將修改的內容寫入到新檔案後,再刪除原有的舊檔案,將新檔案更名成舊檔名
二.集合
1.集合的重要屬性:可以自動去重!(劃重點)
2.集合初始化:s=set(),集合也是用{}括起來的形式,但不是鍵值對。空的集合必須用set()初始化不能用{},因為{}表示空的字典
3.集合的幾種運算:
1.交集:找出集合之間相同的元素
兩種方式:intersection()和&
2.並集:把2個集合合併到一起,然後去除重複
兩種方式:union和|
3.差集:前面一個有,後面一個沒有的
兩種方式:difference和 -
4.對稱差集: 只在一個集合裡面出現過的,都給你整出來(除交集以外的那些元素)
兩種方法:symmetric和^
4.集合元素新增:add,無返回值
5.集合元素刪除:因為集合是無序的,所以無法通過指定下標來操作(沒有下標這個概念)
1.pop:隨機刪除,返回刪除的那個值,不能帶任何引數
2.remove:指定元素刪除,沒有返回值
6.集合的遍歷:
三.string模組的幾個方法:
四.元組:元組也是一個有序的序列,特點是值不能修改
1.元組的初始化:一定要用逗號間隔
五.隨機操作常用方法:
需要匯入模組:import random
1.randint(a,b):隨機一個整數,範圍左閉右閉
random.randint(1,23):隨機一個範圍在1和23直接的整數
2.choice(seq):從一個有序的序列(不包括字典和集合)中隨機選一個值返回,返回型別同返回元素的型別
3.sample(seq,n):從一個有序的序列(不包括字典和集合)中隨機選n個值組成list返回
4.shuffle(list):引數只能是list,打亂一個list的順序,無返回值
5.uniform(a,b) :a-b直接隨機取小數
六.函式簡單介紹:
函式以def定義,函式名(),:結尾,預設返回值為None,也可以自定義返回值
函式的形參:函式定義的時候括號裡帶的引數
函式的實參:函式呼叫時傳入的實際引數
函式的變數:函式裡面定義的變數,作用域只在函式體內,函式體外不可見
函式的返回值:返回值作為函式的一個處理結果返回給呼叫者