標籤:寫法 escape 補充 ror 培訓 pos lin mode odi
檔案操作初識
在d盤建立”護士空姐學生少婦連絡方式”的txt 檔案
path 檔案路徑:d:\護士空姐學生少婦連絡方式.txt
encoding編碼方式:utf-8,gbk....
mode 操作方式: 唯讀,唯寫,追加,讀寫,寫讀.....
# f2 = open(‘護士學生空姐班主任.txt‘, encoding=‘utf-8‘)# print(f2.read())# f1.close()
路徑:絕對路徑:從根目錄開始一直找到檔案。
相對路徑:從目前的目錄開始找到的檔案。
錯誤原因分析:
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xbf in position 0: invalid start byte
編碼錯誤:檔案儲存體時編碼方式與檔案開啟時的編碼方式不一致。
SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3: truncated \uXXXX escape
兩種:
第一種:加r
f1 = open(r‘d:\u護士空姐學生少婦連絡方式.txt‘, encoding=‘GB2312‘, mode=‘r‘)
print(f1.read())
f1.close()
第一種:加\
f1 = open(‘d:\\護士空姐學生少婦連絡方式.txt‘, encoding=‘GB2312‘, mode=‘r‘)
print(f1.read())
f1.close()
#凡是帶b不用encoding
#只有是r模式 mode=‘r‘可以省略不寫
常用操作方法
r,w,a
讀模式:
*r
read
# 1,f.read() 全部讀出來。# f2 = open(‘護士學生空姐班主任.txt‘, encoding=‘utf-8‘)# print(f2.read())# f2.close()
read(n)
# f1 = open(‘護士學生空姐班主任.txt‘, encoding=‘utf-8‘)# print(f1.read(3))# f1.close()# r模式:read(n) n 是按照字元讀取。# rb模式:read(n) n 是按照位元組讀取。
readline()
# f1 = open(‘護士學生空姐班主任.txt‘, encoding=‘utf-8‘)# # print(f1.readline())# # print(f1.readline())# # print(f1.readline())# # print(f1.readline())# f1.close()
readlines()
# f1 = open(‘護士學生空姐班主任.txt‘, encoding=‘utf-8‘)# print(f1.readlines())# for line in f1.readlines():# print(line)# f1.close()
for迴圈 最好的
# f1 = open(‘護士學生空姐班主任.txt‘, encoding=‘utf-8‘)# for line in f1:# print(line)# f1.close()
rb
# f1 = open(‘護士學生空姐班主任.txt‘,mode=‘rb‘)# print(f1.read(1))# f1.close()
*r+
# f1 = open(‘護士學生空姐班主任.txt‘, encoding=‘utf-8‘, mode=‘r+‘)# print(f1.read())# f1.write(‘666‘)# f1.close()
r+b
# f1 = open(‘護士學生空姐班主任.txt‘, mode=‘r+b‘)# print(f1.read())# f1.write(‘666‘.encode(‘utf-8‘))# f1.close()
寫入模式:
*w
# f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘w‘)# f1.write(‘老男孩是最好的培訓學校...‘)# f1.close()# f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘w‘)# f1.write(‘法國進口分類結果‘)# f1.close()
w:沒有檔案,建立檔案寫內容。
w:如果有檔案,清空原檔案,寫入新內容。
wb
# f1 = open(‘log2‘, mode=‘wb‘)# f1.write(‘法國進口分類結果‘.encode(‘utf-8‘))# f1.close()
w+
# f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘w+‘)# f1.write(‘老老男孩.....‘)# f1.seek(0) # 調整游標# print(f1.read())# f1.close()
w+b
追加模式
*a
a:沒有檔案,建立檔案寫內容。
a:如果有檔案,最後面追加新內容。
# f1 = open(‘log3‘, encoding=‘utf-8‘, mode=‘a‘)# f1.write(‘barry‘)# f1.close()
ab
# f1 = open(‘log3‘, mode=‘ab‘)# f1.write(‘中國‘.encode(‘gbk‘))# f1.close()
a+
# f1 = open(‘log3‘, encoding=‘utf-8‘, mode=‘a+‘)# f1.write(‘範德薩急功近利開發工具‘)# f1.seek(0)# print(f1.read())# f1.close()
a+b
補充:
#ps 非文字的檔案的讀取寫入
# f1 = open(‘11.jpg‘, mode=‘rb‘)# content = f1.read()# print(content)# f1.close()# f2 = open(‘小豬佩奇.jpg‘, mode=‘wb‘)# f2.write(content)
gbk utf-8
對於字母,數字,特殊字元的編碼都是引用ascii碼,所以可以直接轉化。
s1 = ‘123abc*‘
b1 = s1.encode(‘utf-8‘)
s2 = b1.decode(‘gbk‘)
print(s2)
05,檔案操作常用方法
# readlable() writeable()判斷是否可讀或者可寫
# f1 = open(‘log1‘, encoding=‘utf-8‘)# print(f1.readable())# print(f1.writable())# f1 = open(‘log1‘, encoding=‘utf-8‘,mode=‘r+‘)# print(f1.readable())# print(f1.writable())
# seek: 按照位元組去調整游標
# f1 = open(‘log1‘, encoding=‘utf-8‘)# f1.seek(3)# print(f1.read())# f1.close()
# tell 告訴游標的位置
# f1 = open(‘log1‘, encoding=‘utf-8‘)# print(f1.tell())# print(f1.read())# print(f1.tell())# f1.close()
#truncate 對原檔案進行截取內容,以位元組形式,只能在a模式下使用。
# f1 = open(‘log1‘, encoding=‘utf-8‘, mode=‘a‘)# f1.truncate(3)# f1.close()
#檔案操作的另一種寫法
# with open() as 不用主動關閉 f1.close()
# 同一open 可以操作多個檔案
# with open(‘log1‘, encoding=‘utf-8‘) as f1:# print(f1.read())# with open(‘log1‘, encoding=‘utf-8‘) as f1,\# open(‘log2‘,encoding=‘utf-8‘, mode=‘w‘) as f2:# print(f1.read())# f2.write(‘666‘)# with open(‘log1‘, encoding=‘utf-8‘) as f1:# content = f1.read()# f1.close()# pass# with open(‘log1‘, encoding=‘utf-8‘,mode=‘w‘) as f2:# f2.write(‘333‘)
06,檔案的改。
1,開啟原檔案 old_file,將原內容讀取到記憶體。
2,建立一個新檔案new_file。
3,將原內容通過你改寫形成新內容,寫入到新檔案。
4,將原檔案刪除。
5,將新檔案重新命名成原檔案。
#方法一,原檔案內容不打,可以用此方法,但是此方法還是很low。
# import os# with open(‘change‘, encoding=‘utf-8‘) as f1,\# open(‘change.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2:# old_content = f1.read()# new_content = old_content.replace(‘alex‘, ‘SB‘)# f2.write(new_content)# os.remove(‘change‘)# os.rename(‘change.bak‘, ‘change‘)
# 方法2
import oswith open(‘change‘, encoding=‘utf-8‘) as f1, open(‘change.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2: for line in f1: new_line = line.replace(‘SB‘, ‘alex‘) f2.write(new_line)os.remove(‘change‘)os.rename(‘change.bak‘, ‘change‘)
python 學習 D8 檔案操作 常用操作方法 檔案的改