1. 檔案的兩種開啟方式
方式一:開啟後複製給控制代碼,控制代碼操作檔案
控制代碼 = oopen(檔案路徑,操作模式,編碼格式)
其中操作模式有三種:
r 只讀模式 只能讀不能寫
w 只寫模式 只寫不能讀
a 只追加模式 檔案資料末尾新增內容
方式二:使用with關鍵字,自動開啟和自動關閉檔案
2. 檔案的讀寫方式
2.1 r 只讀模式
只能讀不能寫
檔案不存在時會報錯
with open('a.txt', 'r', encoding='utf-8') as f:
data = f.read()
2.2 w 只寫模式
只能寫不能讀
檔案不存在時會自動建立一個檔案
w模式又稱覆蓋寫模式,每一次寫入資料時都將檔案原本的內容清空,再寫入新的資料
with open('c.txt', 'w', encoding='utf-8') as f: f.write('Lionel Messi')
2.3 a 只追加模式
如果檔案不存在則新建檔案並寫入資料
檔案資料末尾新增新的資料
with open('d.txt', 'a', encoding='utf-8') as f:
f.write('Neymar')
3. 檔案的操作方式
3.1 + 模式
讓原本的模式擴充套件出新的模式
r+ 既能讀又能寫 這種模式下的寫是覆蓋寫
w+ 既能寫又能讀
不建議採用 + 模式,對於一個檔案來說要麼就是向其中寫入資料,要麼就是從其中讀取資料
3.2 b模式
二進位制模式 可以操作任意型別的檔案
r rb b不可省略
w wb b不可省略
a ab b不可省略
1. 該模式可以操作任意型別的檔案
2. 該模式一定不能指定encoding引數
3. 該模式讀寫都是以byte型別(二進位制)為最小單位
將以上讀取到的二進位制資料寫入到一個新的檔案
3.3 檔案讀寫程式碼舉例
# 先寫入一個列表
# num_list = [1, 2, 3]
# write() argument must be str, not list
# with open("1.text", "w", encoding="utf-8") as fp:
# fp.write(str(num_list))
# 再讀取出來
# with open("1.text", "r", encoding="utf-8") as fp:
# data = fp.read()
# print(data, type(data)) # <class 'str'>
# with open("2.text","a",encoding="utf-8") as fp:
# fp.write("dream|521|666" + "\n")
'''
user_data = {}
with open("2.text", "r", encoding="utf-8") as fp:
data = fp.read()
for i in data.split():
username, password, hobby = i.split("|")
user_data[username] = {
"username": username,
"password": password,
"hobby": hobby
}
print(user_data)
'''
4. 檔案操作的內建方法
4.1 r模式的內建方法
f.read() 一次將內容全部讀取出來
f.readline() 只讀取一行的資料
f.readlines() 讀取所有資料,但是每一行資料是列表中的一個元素
for i in f: 控制代碼可以被遍歷,遍歷得到的每一個元素是行
f.readable() 判斷當前控制代碼物件是否可讀
4.2 w模式的內建方法
f.write() 一次將所有內容全部寫入
f.writelines(列表) 將列表中的每一個元素首尾拼接後一次寫入
f.writeable() 判斷當前控制代碼物件是否可寫
在沒有退出with語句之前,連續write是可以持續寫入資料的