一.檔案操作
對檔案的操作分三步:
1、開啟檔案獲取檔案的控制代碼,控制代碼就理解為這個檔案
2、通過檔案控制代碼操作檔案
3、關閉檔案。
1.檔案基本操作:
2.檔案開啟模式:
3.檔案操作:r:唯讀,不加模式預設為r
w:只寫,[不可讀,不存在則建立,存在則刪除內容]
a:追加,[不可讀,不存在則建立,存在則只追加內容]
"+" 表示可以同時讀寫某個檔案
r+ :讀寫--可讀、可寫、可追加,如果開啟的檔案不存在的話,會報錯
w+ :寫讀--先建立檔案,再寫(在原檔案上的修改都是覆蓋操作)
a+ :追加讀--預設開啟控制代碼在末尾,讀取需先seek(0)指定位置,一寫控制代碼就到末尾了
#r和w,seek指定控制代碼可以覆蓋修改,a+指定控制代碼也是追加
"u"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
rur+u
# windows上換行符為 \r\n
"b"表示處理二進位制檔案
rb:二進位制檔案讀
wb:二進位制檔案寫
ab:追加二進位制
# 檔案存在硬碟上都是二進位制,前邊說encoding='utf-8'是指把二進位制轉換成utf-8編碼開啟,
# 而「b」是指,不用轉換編碼,我直接讀取二進位制
4.檔案內容修改f = open("1.txt", 'r', encoding="utf-8")# encoding="utf-8",utf-8編碼開啟檔案,windows下預設gbk開啟
f.readline() # 讀一行,字串
f.readable() # 判斷檔案是否可讀
f.writable() # 判斷檔案是否可寫
f.encoding() # 列印檔案的編碼
f.read() # 讀取檔案控制代碼到結束所有內容,大檔案時不要用,因為會把檔案內容都讀到記憶體中
f.readlines() # 讀取檔案所有內容,返回乙個list,元素是每行的資料,大檔案時不要用
f.write("天安門") # 寫入內容,r和w模式,為控制代碼處覆蓋寫入,a模式寫到最後
f.writelines(['zhangsan'],['李四']) #將乙個列表寫入檔案中
f.flush() # 強制重新整理(預設緩衝區滿了存入磁碟)
f.close() # 檔案關閉
f.closed() # 判斷檔案是否關閉
f.read(5) # 讀取5個字元
f.tell() # 檢視檔案控制代碼位置。按照字元計數
f.seek(0) # 移動檔案控制代碼到第0個字元位置
f.encoding # 檔案編碼
f.truncate() # 什麼不寫清空檔案
f.truncate(10) # r模式截斷出前10個字元,其他模式還是清空
大檔案時,讀取檔案高效的操作方法:
用上面的read()和readlines()方法操作檔案的話,會先把檔案所有內容讀到記憶體中,這樣的話,記憶體資料一多,非常卡,高效的操作,就是讀一行操作一行,讀過的內容就從記憶體中釋放了
f = open('file.txt')
for line in f: # f 變成了迭代器
print(line) # 判斷行的話,需自己加個計數器
前面說的檔案修改,只是對原內容覆蓋,並不會插入內容,原內容往後移,因為這樣有可能就把其他檔案覆蓋了,檔案發生損壞。so:
檔案修改兩個辦法:
1. 載入到記憶體,記憶體修改,覆蓋寫回
2. 另開啟乙個檔案,修改完寫到新檔案中
with open("test", 'r+', encoding='utf-8') as fr
res = fr.read()
new_res = res.replace('我','me')
fr.write(new_res)
5.檔案關閉(with語句)with open("test", 'r', encoding='utf-8') as f, \
open("test.tmp", 'w', encoding='utf-8') as f_new:
for line in f:
if "聚焦頭條" in line:
line = line.replace("聚焦頭條","fgf")
f_new.write(line)
# os.path.exists("test.bak") 判斷檔案是否存在
# os.remove("test.bak") 刪除檔案
# os.rename(test.tmp, test) 重新命名
為了避免開啟檔案後忘記關閉,可以通過管理上下文,即:
如此方式,當with**塊執行完畢時,內部會自動關閉並釋放檔案資源。with open('log') as f:
pass
在python 2.7 後,with又支援同時對多個檔案的上下文進行管理
二.集合
集合也是一種資料型別,乙個類似列表的東西,特點是乙個無序的,不重複的資料組合,它的主要作用如下:
1、常用操作
去重
list_1 = [1,1,2,3,4,5,6,6,7,7,8,8,9,9,3]
set_1 = set(list_1)
>>> set_1
# 集合用{}表示
交集 set_2 =
set_1.intersection(set_2)
set_1&set_2
並集: set_1.union(set_2)
set_1 | set_2
差集: set_1.difference(set_2)
set_1 - set_2
# in set_1 but not in set_2
子集: set_1.issubset(set_2) #判斷set_1是不是set_2的子集
父集: set_1.issuperset(set_2) #判斷
set_1是不是set_2的父集
2、符號操作對稱差集:(並集去除交集,即並集和交集的差集) 輸出2個列表都沒有的值
set_1.symmetric_difference(set_2) 即(set_1 | set_2) - (set_1 & set_2)
set_1 ^ set_2
判斷有沒有交集,無交集,返回true
set_1.isdisjoint(set_2)
3、集合增刪改查& : 交集 intersection
| :並集 union
-:差集 difference
s <= t :子集 issubset
s >= t :父集 issuperset
^ :對稱差集 symmetric_difference
新增:
set_1.add(99)
批量新增
set_1.update([1,2,3,4])
刪除: set_1.remove('h') # 沒有則報錯
set_1.discard(99) # 在則刪除,不在就不操作。無返回資訊
隨機刪:
set_1.pop()
長度: len(set_1)
是否屬於判斷
s in set_1 # (判斷成員在不在都是這麼寫,字典中判斷key)
返回 set 「s」的乙個淺複製
s.copy()
Python基礎10 檔案操作和IO操作
檔案 可以作為資料的儲存 儲存爬取的資料 資料庫 redis mysql 檔案和資料庫都是資料持久化 my list print my list 正常執行的專案都是在記憶體當中 儲存資料的內容需要存在硬碟裡面 檔案是以硬碟為載體的 檔案的訪問模式 r模式 唯讀 檔案不存在會崩潰 w模式 只寫 a模式...
python學習筆記(四)檔案操作和集合
python學習筆記 四 檔案操作和集合 檔案基本操作 現有檔案file.txt 1 f open file.txt r 以唯讀方式開啟乙個檔案,獲取檔案的控制代碼,如果是讀的話,r可以不寫,預設就是唯讀 檔案不存在時,會報錯 2 first line f.readline 獲取檔案的第一行內容,返...
Python基礎(18)檔案操作
在計算機中,檔案是以 二進位制 的方式儲存在磁碟上的 文字檔案和二進位制檔案 1.文字檔案 2.二進位制檔案 在計算機中要操作檔案的套路非常固定,一共包含三個步驟 開啟檔案2.讀 寫檔案 讀 將檔案內容讀入記憶體 read 寫 將記憶體內容寫入檔案 write 關閉檔案 序號函式 方法 說明01 o...