Python基礎之檔案操作

2022-06-01 22:12:14 字數 4479 閱讀 2750

1、開啟檔案的方法:

第一種:開啟檔案執行完命令後,需要關閉檔案,否則會一直占用記憶體空間

f=open('/data/1.txt','r+',encoding='utf-8')    #後面的r+ 表示開啟檔案的模式是讀寫,encoding='-8'是指定編碼格式,因為用open()函式開啟,open()函式會去找系統的預設編碼,windows的系統一般是gbk編碼格式的,如果沒有指定編碼格式就會報錯,而mac預設編碼就是utf-8,開啟就不會報錯了,這裡的解決辦法是在開啟檔案時,指定編碼格式

f.close     #關閉檔案 

第二種:這種會自動關閉檔案,不用我們手動關閉;

with open('/data/1.txt','r+',encoding='utf-8') as f:

2、開啟檔案的模式:

r : 唯讀模式,預設如果不加模式就是唯讀模式   

r+: 讀寫模式,讀,寫,追加,如果檔案不存在會報錯。   

w:只寫模式  ,會覆蓋檔案內容,如果檔案不存在會建立

w+: 寫讀模式 ,會覆蓋檔案內容,如果檔案不存在會建立

a:追加模式  ,如果檔案不存在會建立

a+:和a的意思一樣     

3、讀檔案的方法:

(1)read()方法,如果檔案大的話不要用read()這種方法,可能不能全部讀出來,而且比較佔記憶體;

1 f=open("

geci.txt

","r+

",encoding='

utf-8')2

print(f.read())#

讀檔案34#

以上執行的結果是

5一杯敬朝陽 一杯敬月光67

喚醒我的嚮往 溫柔了寒窗89

於是可以不回頭地逆風飛翔

1011

不怕心頭有雨 眼底有霜

1213

一杯敬故鄉 一杯敬遠方

1415

守著我的善良 催著我成長

1617

所以南北的路從此不再漫長

1819

靈魂不再無處安放

2021

一杯敬明天 一杯敬過往

2223 支撐我的身體 厚重了肩膀

(2)readline()方法,此方法是只讀取檔案一行的內容;

1 f=open("

geci.txt

","r+

",encoding='

utf-8

')#以追加模式開啟檔案

2print(f.readline())#

讀取一行內容34

#以上執行的結果是

5 一杯敬朝陽 一杯敬月光

readline()唯讀了一行,如果要讀全部內容那就用迴圈去一行一行的讀,如下方法:

1 with open('

geci.txt

','r

',encoding='

utf-8

') as f:

2while

true:

3 line1=f.readline()

4if len(line1) ==0:

5break

6print

(line1)78

#以上執行的結果是

9一杯敬朝陽 一杯敬月光

1011

喚醒我的嚮往 溫柔了寒窗

1213

於是可以不回頭地逆風飛翔

1415

不怕心頭有雨 眼底有霜

1617

一杯敬故鄉 一杯敬遠方

1819

守著我的善良 催著我成長

2021

所以南北的路從此不再漫長

2223

靈魂不再無處安放

2425

一杯敬明天 一杯敬過往

2627 支撐我的身體 厚重了肩膀

(3)readlines(),此方法是把檔案的每一行放到乙個list裡面

1 f=open("

geci.txt

","r+

",encoding='

utf-8

')#以追加模式開啟檔案

2print(f.readlines())#

讀取一行內容34

#以上執行的結果是

5 ['

一杯敬朝陽 一杯敬月光\n

', '

\n', '

喚醒我的嚮往 溫柔了寒窗\n

', '

\n', '

於是可以不回頭地逆風飛翔\n

', '

\n', '

不怕心頭有雨 眼底有霜\n

', '

\n', '

一杯敬故鄉 一杯敬遠方\n

', '

\n', '

守著我的善良 催著我成長\n

', '

\n', '

所以南北的路從此不再漫長\n

', '

\n', '

靈魂不再無處安放\n

', '

\n', '

一杯敬明天 一杯敬過往\n

', '

\n', '

支撐我的身體 厚重了肩膀

']

4、將檔案中的元素轉存為集合;

例如users.txt檔案中的內容為:

xuezhiqian:wwwww

xiehong:hong

qianren:111111

dajun:qqqqqq

yuxinhong:hong

將此檔案轉存為集合的方式:

1 result ={}

2 f = open('

users.txt

', '

r+',encoding='

utf-8')

3for line in

f.readlines():

4 line=line.strip()5if

notlen(line):

6continue

7 result[line.split('

:')[0]] = line.split('

:')[1].strip()#

將每次迴圈得到的key和value存到字典中,strip()是去掉換行和空格

8print

(result)910

11執行結果是:

12

5.刪除檔案中的某一行:

1 with open('

users.txt

','r

',encoding='

utf-8

')as f1:

2   lines =f1.readlines()

3with open('

users1.txt

','w

',encoding='

utf-8

')as f2:

4   

for line in

lines:

5      

if username.strip()in

line:

6        

print

(username.strip())

7continue

8    

f2.write(line)910

執行之後:生成乙個新的users1.txt的檔案,內容為:

11xuezhiqian:wwwww

12xiehong:hong

13 qianren:111111

14 yuxinhong:hong

6、檔案指標:

1 with open('

333.txt

','w

') as f:

2f.write(txt3)

3 with open('

333.txt

','r

') as f:

4print

(f.tell())

5print (f.readline().strip()) #

strip表示去掉換行符和空格

6print

(f.readline().strip())

7print

(f.tell())

8f.seek(0)

9print

(f.readline().strip())

1011

#執行結果:120

13 121212121233

14qwertyu

15 23

16 121212121233

說明:tell() 方法會顯示當前的指標(游標)位置,第一次肯定是0,然後讀了兩行,那指標位置就是在兩行之後,然後用seek(0)方法把指標位置調整到0,seek()方法控制指標的位置。再次讀取一行,還是讀取的第一行,因為指標在哪,就從**開始讀。

Python基礎之檔案操作

python的檔案操作還是比較簡單的基本分為三步 開啟,讀寫,關閉 檔案開啟 f open db r 開啟 f.read 讀 f.close 關閉 為了避免程式設計師忘記最後一步關閉,優雅的python使用了以下語句 with open db r as f,open db2 r as f2 opra...

python基礎之檔案操作

開啟檔案並輸出檔案內容模板 f open flie mode r encoding utf 8 data f.read 返回整個檔案資料 data f.readlines 以列 式,返回整個檔案資料 print data f.close flie檔案路徑 相對路徑或者絕對路徑 mode檔案開啟模式 ...

python基礎之檔案操作

轉義rb 讀位元組 爬蟲 讀取出來的全部是位元組碼 f open test.text rb encoding utf 8 print f.read 報錯!valueerror binary mode doesn t take an encoding argument 因為rb rb 操作時不支援指定...