在來我們來玩一下文件操作,這個在未來工作上,也是會很常用到的功能
Python2.7中,可以用file()
來打開文件,而在Python3中,一律都是用open()
,接下來在當前目錄下,先建立一個空文件叫test
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open("test")
f.write('i am a ironman')
f.close()
---------------執行結果---------------
io.UnsupportedOperation: not writable
Process finished with exit code 1
報錯了,雖然打開了,但不可以寫,因為預設只有讀取
的權限,沒有w(寫入)
的權限,詳細可以參考下圖
那到底有幾種模式呢?請看下表
文件操作模式:
Character | Meaning |
---|---|
r |
open for reading (default) |
w |
open for writing, truncating the file first |
x |
create a new file and open it for writing |
a |
open for writing, appending to the end of the file if it exists |
b |
binary mode |
t |
text mode (default) |
+ |
open a disk file for updating (reading and writing) |
U |
universal newline mode (deprecated) |
所以依據上表的權限,我們給予w
的權限試試
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open("test", 'w')
f.write('i am a ironman')
f.close()
咦!可以寫入了,那就在多寫個幾行試試?
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open("test", 'w')
f.write('i am a ironman')
f.write('my name is tony stark')
f.close()
觀察一下,test
這個文字檔,有發現什麼了嗎?是的,你剛剛打的字都已經連起來了,i am a ironmanmy name is tony stark
就像是這樣子,明明程式是分別寫二行的,但
怎麼還會連起來呢?這其實是因為沒有使用換行符號(\n)
,只要在文字最後面加入換行符號就可以換行嚕
再來我們來試試用a
權限,先寫入檔案,再讀取檔案看看,試試有什麼作用?
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
f = open("test", 'a')
#f.write('i am a ironman')
f.write('my name is tony stark')
date = f.read()
print('----->', date)
f.close()
---------------執行結果---------------
io.UnsupportedOperation: not readable
Process finished with exit code 1
咦,怎麼會出錯呢?其實是因為a
並不能做讀取的動作,它只會在原有的文件裡的最後面一行,附加新增的文字進去
知識點:
參考資料: