1. 程式人生 > >Python集合&文件操作Day03

Python集合&文件操作Day03

循環 gb2312 就是 光標 隨機 ace 添加 讀寫 sed

集合

主要作用:

  1. 去重
  2. 關系測試, 交集\差集\並集\反向(對稱)差集
技術分享圖片
 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 #集合操作 25
print("-------------") 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
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
  • rU
  • r+U
"b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標註)
  • 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