python學習筆記 三 檔案操作和集合

2022-09-06 09:45:13 字數 4439 閱讀 8613

這篇部落格來說一下python對檔案的操作。

對檔案的操作分三步:

1、開啟檔案獲取檔案的控制代碼,控制代碼就理解為這個檔案

2、通過檔案控制代碼操作檔案

3、關閉檔案。

現有以下檔案file.txt:12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

3334

3536

3738

3940

4142

43寂寞當然有一點

你不在我身邊

總是特別想念你的臉

距離是乙份考卷

測量相愛的誓言

最後會不會實現

我們為愛還在學

學溝通的語言

學著諒解

學著不流淚

等到我們學會飛

飛越黑夜和考驗

日子就要從孤單裡畢業

我們用多一點點的辛苦

來交換多一點點的幸福

就算幸福

還有一段路

等我們學會忍耐和付出

這愛情一定會有張證書

證明從此不孤獨

從此不孤獨

檔案基本操作:12

3456

7f = open('file.txt','r') #以唯讀方式開啟乙個檔案,獲取檔案控制代碼,如果是讀的話,r可以不寫,預設就是唯讀,

在python2中還有file方法可以開啟檔案,python3中file方法已經沒有了,只有open        

frist_line = f.readline()#獲取檔案的第一行內容,返回的是乙個list

print(frist_line)#列印第一行

res = f.read()#獲取除了第一行剩下的所有檔案內容

print(res)

f.close()#關閉檔案

開啟檔案時,需要指定檔案路徑和以何等方式開啟檔案,開啟後,即可獲取該檔案控制代碼,後面通過此檔案控制代碼對該檔案操作,

開啟檔案的模式有:12

3r,唯讀模式(預設)。

w,只寫模式。【不可讀;不存在則建立;存在則刪除內容;】

a,追加模式。【不可讀; 不存在則建立;存在則只追加內容;】

"+" 表示可以同時讀寫某個檔案12

3r+,【可讀、可寫;可追加,如果開啟的檔案不存在的話,會報錯】

w+,【寫讀模式,使用w+的話,已經存在的檔案內容會被清空,可以讀到已經寫的檔案內容】

a+,【追加讀寫模式,不存在則建立;存在則只追加內容;】

"u"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)12

rur+u

"b"表示處理二進位制檔案(如:ftp傳送上傳iso映象檔案,linux可忽略,windows處理二進位制檔案時需標註)12

3rbwbab

檔案操作方法:12

3456

78910

1112

1314

f = open('file.txt','r+',encoding='utf-8')#encoding引數可以指定檔案的編碼

f.readline()#讀一行

f.readable()#判斷檔案是否可讀

fr.writable()#判斷檔案是否可寫

fr.encoding#列印檔案的編碼

f.read()#讀取所有內容,大檔案時不要用,因為會把檔案內容都讀到記憶體中,記憶體不夠的話,會把記憶體撐爆

f.readlines()#讀取所有檔案內容,返回乙個list,元素是每行的資料,大檔案時不要用,因為會把檔案內容都讀到記憶體中,記憶體不夠的話,會把記憶體撐爆

f.tell()#獲取當前檔案的指標指向

f.seek(0)#把當前檔案指標指向哪

f.write('愛情證書')#寫入內容

f.fulsh()#寫入檔案後,立即從記憶體中把資料寫到磁碟中

f.truncate()#清空檔案內容

f.writelines(['愛情證書','孫燕姿'])#將乙個列表寫入檔案中

f.close()關閉檔案

大檔案時,讀取檔案高效的操作方法:

用上面的read()和readlines()方法操作檔案的話,會先把檔案所有內容讀到記憶體中,這樣的話,記憶體資料一多,非常卡,高效的操作,就是讀一行操作一行,讀過的內容就從記憶體中釋放了12

34f = open('file.txt')

for line in f:

print(line)

這樣的話,line就是每行檔案的內容,讀完一行的話,就會釋放一行的記憶體

with使用:

在操作檔案的時候,經常忘了關閉檔案,這樣的就可以使用with,它會在使用完這個檔案控制代碼之後,自動關閉該檔案,使用方式如下:12

3456

7with open('file.txt','r') as f:#開啟乙個檔案,把這個檔案的控制代碼付給f

forline inf:

print(line)

with open('file.txt')asfr,with open('file_bak','w')asfw:#這個是多檔案的操作,開啟兩個檔案,fr是讀file.txt,fw是新建乙個file_bak檔案

forline infr:#迴圈file.txt中的每一行

fw.write(line)#寫到file_bak檔案中

修改檔案:

修改檔案的話,有兩種方式,一種是把檔案的全部內容都讀到記憶體中,然後把原有的檔案內容清空,重新寫新的內容;第二種是把修改後的檔案內容寫到乙個新的檔案中

第一種123

4with open('file.txt','r+')asfr:

res=fr.read()

new_res=res.replace('我','me')

fr.write(new_res)

第二種123

4with open('file.txt')asfr,with open('file_new','w')asfw:#這個是多檔案的操作,開啟兩個檔案,fr是讀file.txt,fw是新建乙個file_bak檔案

forline infr:#迴圈file.txt中的每一行

new_line=line.replace('我','me')

fw.write(new_line)#寫到file_bak檔案中

集合:集合也是一種資料型別,乙個類似列表東西,它的特點是無序的,不重複的,也就是說集合中是沒有重複的資料

集合的作用:

1、它可以把乙個列表中重複的資料去掉,而不需要你再寫判斷

2、可以做關係測試,比如說有兩個班,乙個效能測試班,乙個是介面測試班的,想找出來既學習了效能又學習了介面測試的同學,就可以用集合

定義集合12

34list = [2,3,1,2,3,4]

s_list = set(list)#這樣就定義了乙個集合

set1 = set([1,3,4,5,6])#這種方式和上面的都是把list轉換成乙個集合

set2=#這種方式是直接定義乙個集合

集合操作12

3456

78910

1112

1314

1516

1718

19list1 = 

list2 = 

list3 = 

print(list1.intersection(list2))  # 取交集,也就是取list1和list2中都有的

print(list1 & list2)# 取交集

print(list1.union(list2))  # 取並集,也就是把list1和list2合併了,然後去除重複的

print(list1 | list2)# 取並集

print(list1.difference(list2))  #取差集 在list中存在,在list2中沒有的

print(list1 - list2)

print(list3.issubset(list1))#判斷list3是不是list1的子集

print(list1.issuperset(list3))#判斷list1是不是list3的父集

print(list1.isdisjoint(list3))#判斷list1和list3是否有交集

print(list1.symmetric_difference(list2))#對稱差集,輸出兩個列表中都沒有的值,也就是把兩個集合中相同的去掉

print(list1 ^ list2)

list1.add(888)#新增元素

list1.update([777,666,666])

list1.remove(777)#刪除元素,如果元素不存在會報錯

list1.pop()#刪除乙個隨機的元素,並返回刪除的元素

list1.discard('dddd')#如果刪除的元素存在,刪除,不存在不做處理

python學習筆記(三) 檔案操作

對檔案的操作分三步 1 開啟檔案獲取檔案的控制代碼,控制代碼就理解為這個檔案 2 通過檔案控制代碼操作檔案 3 關閉檔案。現有以下檔案a.txt 登鸛雀樓 唐代 王之渙 白日依山盡,黃河入海流。一 檔案基本操作 f open a.txt a encoding utf 8 開啟乙個檔案 f.seek ...

python學習記錄(三) 檔案操作

操作檔案必須進行的三個步驟 開啟檔案 對檔案進行操作 讀,寫 關閉檔案 python中開啟檔案使用的是open函式,需要傳入檔案開啟的模式,所有檔案開啟模式如下 檔案開啟模式描述r 以唯讀模式開啟檔案,並將檔案指標指向檔案頭 如果檔案不存在會報錯 w以只寫模式開啟檔案,並將檔案指標指向檔案頭 如果檔...

Python學習筆記 四 檔案操作

讀取鍵盤輸入 buf raw input please input your name buf raw input 開啟檔案 如果hello.txt不存在 fp open hello.txt w w是說建立這個檔案,以寫的方式開啟 fp.write text fp.close 如果hello.txt...