用py操作檔案(file類的功能)

2022-06-11 05:39:09 字數 2996 閱讀 7882

用py操作檔案

1、找到檔案並開啟  ------- f = open(filename)  

2、讀、修改 ---------- f.read() 為空即讀所有;f.write(修改的內容)

3、儲存&關閉 --------- f.close() 儲存並關閉

檔案開啟模式只能以一種形式開啟:

r 即read

w 即write,建立模式,如果檔案裡有內容用w的話會把原來的檔案清空再建立

用法:建立模式

方法1、

f = open(file = '檔案所在路徑/檔名.字尾' , mode = 'w')  注意:路徑需要用正斜槓 /

f.write()

f.close()

方法2(推薦)、

with open(file = '檔案所在路徑/檔名.字尾' , mode = 'w') as f:

f.write()

讀模式f = open(file = '檔案所在路徑/檔名.字尾' , mode = 'r')

print(f.readline()) #讀一行

date = f.read() #讀剩下的所有

print(date)

f.close()

追加模式

f = open(file = 『檔名.字尾' , mode = 'w')

f.write(需要新增的內容) #追加到檔案尾部

f.close()

迴圈檔案

f = open(file = 『檔名.字尾' , mode = 'w')

for line in f:

split()方法,即通過指定分隔符對字串進行切片,如果引數 num 有指定值,則分隔 num+1 個子字串

例:str= "line1-abcdef \nline2-abc \nline4-abcd";

printstr.split(); # 以空格為分隔符,包含 \n

printstr.split('', 1); # 以空格為分隔符,分隔成兩個

輸出結果

其他必會功能

1、f.seek() #走多少個位元組

2、f.truncate() #指定長度截斷檔案,指定長度的話就從檔案開頭開始截斷指定長度,不指定長度的話就從當前位置到檔案尾部

混合模式

1、w+  寫讀,這功能沒有什麼意義

2、r+   讀寫,能讀能寫,但都是寫在檔案的最後,和追加一樣

f = open('檔名','r+')

f.write("寫入的內容")

f.write("寫入的內容")

print

3、a+   追加讀,檔案一開啟游標會在檔案尾部,寫的資料全會是追加的形式

f = open('檔名','a+')

f.write("寫入的內容")

f.write("寫入的內容")

f.seek(0) #從頭開始讀

print

修改檔案

1、用r+模式開啟

f = open('檔名','r+')  注:此時游標是在檔案尾部

f.seek()  注:括號內填想要修改的檔案位置,0是從頭開始

f.write("修改的內容") 注:修改的內容是從你seek的位置開始往後覆蓋原來的內容,比如,seek(7),write("哈哈"),即從原來內容的第7個字元開始,「哈哈」會覆蓋掉第8第9個字元的內容

不佔記憶體修改檔案

一、用舊檔案讀,用新檔案寫(生成新檔案)

1、用r模式開啟舊檔案

f = open('檔名','r')

2、用w模式開啟新檔案

f_new = open('檔名.new','w')

3、定義舊內容、新內容

old_str = "被修改內容"

new_str = "修改內容"

4、迴圈舊檔案

for line in f:

if "被修改內容" in line:

line = line.replace(old_str,new_str)

#replace()方法把字串中的 old(舊字串) 替換成 new(新字串),如果指定第三個引數max,則替換不超過 max 次 

5、寫入新檔案

f_new.write(line)

6、關閉舊、新檔案

f.close()

f_new.close()

二、新檔案完全覆蓋舊檔案

1、匯入包

import os  #os包是和作業系統進行操作的,建立檔案、修改檔案、刪除檔案等

old_file = '檔名'

new_file = '檔名.new'

f = open(old_file,'r')

f_new = open(new_file,'w')

old_str = "被修改的內容"

new_str = "修改的內容"

for line in f:

if "被修改的內容" in line:

line = line.replace(old_str,new_str)

f_new.write(line)

f.close()

f_new.close()

os.replace(new_file,old_file)

方法2:

import os

with open('舊檔名','r') as read_f,open('新檔名','w') as write_f:

for line in  read_f:

line = line.replace('被修改的內容','修改的內容')

write_f.write(line)

os.remove('舊檔名')

os.replace('新檔名',''舊檔名』)

檔案從硬碟寫到記憶體

1、不關閉檔案的狀態下從記憶體寫到硬碟,注:把資料寫在硬碟上的一定是字串

語法:f.flush()

把字串變為對應資料型別的方法是:

eval()

操作檔案File類方法

檔案操作 file.copy source targetfilename true 檔案拷貝 true 表示當檔案存在時 覆蓋 如果不加 true,則檔案存在報異常。file.exists 判斷檔案是否存在 file.move source target 移動 剪下 思考如何為檔案重新命名?檔案的剪...

操作檔案File類方法

檔案操作 file.copy source targetfilename true 檔案拷貝 true 表示當檔案存在時 覆蓋 如果不加 true,則檔案存在報異常。file.exists 判斷檔案是否存在 file.move source target 移動 剪下 思考如何為檔案重新命名?檔案的剪...

File類的功能

file類 表示檔案或者目錄的路徑的抽象表現形式.io流就是對檔案進行操作的 public file string pathname 表示pathname的抽象路徑表現的形式 開發中使用這種方式 例句 file file new file e demo a.txt 表示 e盤下的demo資料夾中的a...