Python集合&文件操作Day03
阿新 • • 發佈:2018-05-08
循環 gb2312 就是 光標 隨機 ace 添加 讀寫 sed
集合
主要作用:
- 去重
- 關系測試, 交集\差集\並集\反向(對稱)差集
1 #集合定義 2 list_1 = [1,2,3,4,5,3,6,] 3 list_dict = {1,2,3,4,5,6,7,6,8} 4 #集合操作 5 list_1 = set(list_1) #創建一個唯一的字符集---去重 6 print(set(list_dict)) #創建一個唯一的字符集---去重 7 print(list_1,type(list_1)) 8 list_2 = set([2,6,0,66,22,8,4]) 9 print(list_1.intersection(list_2)) #集合交集 -取出重復的數字 10 print(list_1.union(list_2)) #並集 去重-統一顯示 {0, 1, 2, 3, 4, 5, 6, 66, 8, 22} 11 print(list_1.difference(list_2)) #差集 取出list_1有,list_2沒有的 12 list_3 = set([1,3,6]) 13 print(list_3.issubset(list_1)) #子集 list_3的值在list_1全有 14 print(list_1.issuperset(list_3))#父集 15 print(list_1.symmetric_difference(list_2))#對稱差集-list_1,list_2互相沒有的取出來 16 list_4 = set([7,8,9,3]) 17 print(list_3.isdisjoint(list_4)) #返回True,如果兩個參數有一個零交叉點 18 print("-------------") 19 print(list_1 & list_2) #交集 20 print(list_1 | list_2) #並集 21 print(list_1 - list_2) #差集 list_1不帶list_2 22 print(list_1 ^ list_2) #對稱差集 23 24 #集合操作 25print("-------------") 26 list_1.add(999) #添加 27 print(list_1) 28 list_1.update([777,888]) #添加多項f 29 print(list_1) 30 print(list_1.remove(999)) #刪除 返回 none 31 print(list_1) 32 print(list_1.pop()) #隨機刪除 33 print(list_1.discard(888)) #刪除 返回 none
文件操作
open函數,該函數用於文件處理
操作文件時,一般需要經歷如下步驟:
- 打開文件
- 操作文件
- 關閉文件
準備文件保存為file.txt格式:
1 北國風光,千裏冰封,萬裏雪飄。 2 3 望長城內外,惟余莽莽;大河上下,頓失滔滔。 4 5 山舞銀蛇,原馳蠟象,欲與天公試比高。 6 7 須晴日,看紅裝素裹,分外妖嬈。 8 9 江山如此多嬌,引無數英雄競折腰。 10 11 惜秦皇漢武,略輸文采;唐宗宋祖,稍遜風騷。 12 13 一代天驕,成吉思汗,只識彎弓射大雕。 14 15 俱往矣,數風流人物,還看今朝。沁園春·雪
文件基本操作
1 f = open(‘file.txt‘, ‘r‘) #以只讀方式打開一個文件,獲取文件句柄,如果是讀的話,r可以不寫,默認就是只讀 2 frist_line = f.readline() # 獲取文件的第一行內容,返回的是一個list 3 print(frist_line) # 打印第一行 4 res = f.read() # 獲取除了第一行剩下的所有文件內容 5 print(res) 6 f.close() # 關閉文件打開文件的模式有:
- r,只讀模式(默認)。
- w,只寫模式。【不可讀;不存在則創建;存在則刪除內容;】
- a,追加模式。【可讀; 不存在則創建;存在則只追加內容;】
- r+,可讀寫文件。【可讀;可寫;可追加】
- w+,寫讀
- a+,同a
- rU
- r+U
- rb
- wb
- ab
1 f = open("file.txt",‘r+‘,encoding="utf-8") #文件句柄-文件的內存對象(文件名,字符集,大小。。) 2 print(f.read()) #讀取整個文件 3 print(f.readline()) #讀取一行 4 print(f.readlines()) # 按行存成列表 5 lens = len(open(‘file.txt‘,‘rU‘).readline()) 6 print(lens) #打印文件共有多少行 7 for i in f.readlines()[2:lens]: # 指定文件行數讀取 #從第2行到結尾 8 print(i) 9 print(f.readline()) 10 print(f.tell()) #計算字節數 11 f.seek(3) #返回光標 12 print(f.readline()) 13 print(f.encoding) #打印字符集 14 print(f.fileno()) #返回文件句柄在內存的編號 3 15 print(f.name) #打印文件名 16 print(f.seekable()) #判斷文件光標是否能移動 True 17 print(f.readable()) #判斷文件是否可讀 True 18 print(f.writable()) #判斷文件是否可寫 False 19 f.flush() #刷新 20 f.truncate(10) #文件清空 不傳入值清空文件,傳值從頭開始截斷文件操作函數
1 #刷洗方法使用 進度條 2 import sys,time 3 for i in range(50): 4 sys.stdout.write(‘#‘) 5 sys.stdout.flush() #刷新 進度條 6 time.sleep(0.1)
文件循環操作
1 f = open("file.txt", ‘r‘, encoding="utf-8") 2 f_new = open(‘file.bak‘, ‘w‘, encoding=‘utf-8‘) 3 for line in f: 4 if ‘江山如此多嬌,引無數英雄競折腰‘ in line: 5 line = line.replace(‘江山如此多嬌,引無數英雄競折腰‘, ‘春色滿園關不住,一枝紅杏出墻來.‘) # if username == line .strip(): 6 f_new.write(line) 7 f.close() 8 f_new.close()文件循環
with使用:
- 在操作文件的時候,經常忘了關閉文件,這樣的就可以使用with,它會在使用完這個文件句柄之後,自動關閉該文件,使用方式如下:
1 # 同時打開多個文件格式: 2 # with open(‘file.txt‘, ‘r‘, encoding=‘utf-8‘) as f, open(‘file.bak‘, ‘r‘, encoding=‘utf-8‘) as j: 3 4 with open(‘file.txt‘, ‘r‘, encoding=‘utf-8‘) as f: # 自動關閉文件 5 for line in f: 6 print(line) 7 # 同時打開多個文件建議寫成 8 with open(‘file.txt‘, ‘r‘, encoding=‘utf-8‘) as f, 9 open(‘file.bak‘, ‘w‘, encoding=‘utf-8‘) as j: 10 for line in f: 11 if ‘江山如此多嬌,引無數英雄競折腰‘ in line: 12 line = line.replace(‘江山如此多嬌,引無數英雄競折腰‘, ‘春色滿園關不住,一枝紅杏出墻來.‘) # if username == line .strip(): 13 j.write(line)with使用
資料補充
ASCII 默認8位 只能存英文&特殊字符,不能存儲中文,unicode 萬國碼 默認2個字節,unicode被稱為萬國碼,每個國家都的語法他都含有,utf-8是萬國碼的擴展集 utf-8 可變長的字符集,所有英文字符依然按ascii存儲,所有中文字符統一3個字節。 python2 —python 直接轉 字符編碼的轉換都是有規律的一個gbk的編碼想轉換成utf-8需要先轉為unicode作為中間者,然後在轉為utf-8 當然在轉換時也要註意 解碼decode成unicode 編碼encode成你需要的字符集 同時、在decode和是需要告訴unicode你是什麽字符來解碼成unicode如下面代碼1 print(sys.getdefaultencoding()) # 獲取當前系統字符集 2 msg = "我愛北京天安門" 3 msg_gb2312 = msg.encode("gb2312") 4 print(msg_gb2312) 5 print(msg_gb2312.decode(‘gb2312‘)) 6 7 gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk") 8 print(gb2312_to_gbk)
Python集合&文件操作Day03