文件操作
對文件操作流程
- 打開文件,得到文件句柄並賦值給一個變量
- 通過句柄對文件進行操作
- 關閉文件
基本操作
1 2 3 4 5 6 7 8 |
|
打開文件的模式有:
- 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、用這種方式讀取:,避免readline的方式一次性讀取大文件,內存佔用過大
f = open("file",r+)
for line in f
print(line)
2、替換字符串,方法一:讀行,每行替換字符串,逐行寫入新文件
f = open("file",r)
f_new=open("file_new",rw)
str_old="aa"
str_new="bb"
for line in f
if str_old in line
line=line.replace(str_old,str_new)
f_new.write(line)
3、用with方法防止未關閉文件佔用內存
with open("file1") as f1,open("file2") as f2:
高階函數
變量可以指向函數,函數的參數能接收變量,那麼一個函數就可以接收另一個函數作爲參數,這種函數就稱之爲高階函數。
1 2 3 4 5 6 |
|
裝飾器
高階函數 + 嵌套函數 -> 裝飾器
上述有個問題,只能裝飾 不傳參的函數, 若test1(*args)需傳參,需修改
def(*args,**kwargs):
....
func(*args,**kwargs)
即可