1.文件操作要素
1:文件路徑
2:操作方式
3:編碼方式
2:文件操作方式
2.1:r
這里我在E盤根目錄創建一個 測試文件.txt 作為例子,編碼方式為gb2312,如下
1 f = open('E:/測試文件.txt', mode='r', encoding='gb2312') 2 context = f.read() 3 print(context) 4 f.close() #輸出結果:python是個好東西,我們一定要好好學習它
上面,如果編碼方式我們改成utf-8的話,將會顯示如下錯誤
1 f = open('E:/測試文件.txt', mode='r', encoding='utf-8') 2 context = f.read() 3 print(context) 4 f.close() #輸出結果:Traceback (most recent call last): 5 # File "C:/Users/XZB/PycharmProjects/s1/day8/文件操作.py", line 13, in <module> 6 # context = f.read() 7 # File "D:\python37\lib\codecs.py", line 322, in decode 8 # (result, consumed) = self._buffer_decode(data, self.errors, final) 9 # UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 6: invalid continuation byte
因為再打開文件的時候我們必須以當初編輯這個文件的編碼格式來打開,以什么編碼方式儲存文件的,就要以什么方法打開文件
2.2 rb(非文字類的文件一般用rb,上傳下載基本都用到)
1 f = open('E:/測試文件.txt', mode='rb') #這里就不用編碼了,以什么存就以什么方式打開 2 content = f.read() 3 print(content) 4 f.close() #輸出結果:b'python\xca\xc7\xb8\xf6\xba\xc3\xb6\xab\xce\xf7\xa3\xac\xce\xd2\xc3\xc7\xd2\xbb\xb6\xa8\xd2\xaa\xba\xc3\xba\xc3\xd1\xa7\xcf\xb0\xcb\xfc' 5 #實際里面存的是utf-8,gbk等格式的二進制
2.3:寫:w,沒有這個文件就會創建文件,有這個文件就直接使用這個文件,並且將這個文件內原有的數據刪除
執行代碼前文件中的內容
1 f = open('相對路徑文件', mode='w',encoding='utf-8') 2 f.write('我們現在將測試w的功能') 3 f.close()
執行代碼后文件中的內容:
2.4:wb
執行代碼前文件中的內容
1 f = open('相對路徑文件', mode='wb') 2 f.write('我們現在將測試wb的功能'.encode('utf-8')) 3 f.close()
執行代碼后文件中的內容
如果我們在這里的寫入方式改為其他的寫入方式的話會怎么樣呢?
我們一起來實踐看看:
1 f = open('相對路徑文件', mode='wb') 2 f.write('我們現在將測試wb的功能'.encode('gb2312')) 3 f.close()
由此我們可知:我們要寫的文件是以什么編碼方式創建的,我們寫的時候就要以什么編碼方式去寫
2.5 a
執行代碼前
1 with open('數據', mode='a', encoding='utf-8') as f: 2 f.write('python也是個好工具')
執行代碼后