python基礎--檔案操作
阿新 • • 發佈:2020-08-27
1、檔案的作用
儲存資料,讀寫檔案是最常見的 I/O 操作
2、開啟和關閉檔案
# 步驟: # 1)開啟檔案,獲取檔案描述符 # 2)操作檔案描述符-->讀/寫 # 3)關閉檔案close()-->檔案讀寫完成後應該及時關閉:1、佔用資源;2、資料丟失 f = open('test.txt', 'rw+') # 開啟檔案 print(f.read()) f.close() # 關閉檔案
3、檔案開啟模式的區別
1)檔案、文字模式和二進位制模式
Windows換行: \r\n
Linux換行: \n
mac換行: \r
檔案:檔案本質上都是以二進位制的模式儲存在磁碟上的,用不同編譯器開啟會有編譯的問題。
文字模式:檔案用文字模式操作,會進行換行符的轉換。不同作業系統之間文字模式的不同,本質上就是因為換行符的不同
二進位制模式:檔案用二進位制模式操作,不會進行換行符的轉換
2)open函式
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
引數說明(主要關注file和mode):
- file引數:表示檔案的路徑,可以是絕對路徑也可以是相對路
- modle引數:
modle | 說明 |
r | read |
w | write 覆蓋原資料,檔案不存在則新建 |
a | append 追加,檔案不存在則新建 |
r+ | 在r的基礎上增加了可寫功能,首位開始更新檔案內容 |
w+ | 在w的基礎上增加了可讀功能,會將檔案內容清空 |
a+ | 在a的基礎上增加了可讀功能,內容只能加在檔案末尾 |
rb | read binary |
wb | write binary |
ab | append binary |
- abuffering 表示緩衝區的策略選擇
- encoding 指名檔案的編碼,僅適用於文字檔案
- errors 指明編碼和解碼錯誤時怎麼樣處理,不能在二進位制模式下使用
- 1)當指明為’strict’時,編碼出錯則丟擲異常ValueError。
- 2)當指明為’ignore’時,忽略錯誤。
- 3)當指明為’replace’時,使用某字元進行替代模式,比如使用’?’來替換出錯的字元。
- 4)其它相應還有surrogateescape/xmlcharrefreplacs/backslashreplace。
- newline 控制文字模式下一行的結束字元。可以是None,’’,\n,\r,\r\n等
- closefd 用來給一個檔案控制代碼傳進來,當退出檔案使用時,不對檔案控制代碼進行關閉。如果傳遞一個檔名進來,這個引數無效,必定為True方式。
- opener 用來實現自己定義開啟檔案方式,較複雜
4、如何在程式中進行檔案讀寫
# 1)讀寫操作 f = open('test.txt', 'rw') # 檔案寫操作 f.write('第一次寫資料!') # 檔案讀操作 read(num) num,檔案字數 print(f.read()) f.close() # 2)寫函式 write() writelines() f = open('test.txt', 'w') # write() 一次寫入一行資料 f.write('第一次寫資料!') # writelines() 一次寫入多行資料,列表元素中一個元素代表一行
lines = ['a\n', 'b\n', 'c\n'] f.writelines(lines) f.close() # 3)讀函式 read(num) readline() readlines() f = open('test.txt', 'r') # read(num) num,檔案字數,為空則讀取檔案所有資料 print(f.read(5)) # readline() 依次讀取一行資料 print(f.readline()) # 讀取第一行 print(f.readline()) # 讀取第二行 print(f.readlines()) # 一次讀取所有行,返回列表
# 小練習:讀取檔案並去除空格,輸出在螢幕 for line in f.readlines(): if line[-1] == '\n': print(line[:-1]) else: print(line) f.close()
5、with語句(語法糖),執行檔案後自動關閉檔案。
with open('test.txt', 'w') as f: f.write('我使用with後重新覆蓋範本內容,並賦值給f!!!') with open('test.txt', 'a') as f: f.write('\n我再多說一句,我現在不需要再使用close()去儲存檔案了,直接使用with語句就可以了!') with open('test.txt', 'r') as f: print(f.read())
6、檔案操作
# 1)檔案重新命名 import os os.rename('a.bk.txt', 'hello.txt') # 2)檔案刪除 os.remove('hello.txt') # 3)獲得檔名列表 os.listdir() # 4)建立和刪除資料夾 os.mkdir('abc') os.rmdir('abc')