Python學習筆記(十三)
一、讀文件
file = open("文件路徑名","讀寫模式") # r :讀模式 、w :寫模式、a :追加模式
如果文件存在,則打開文件成功,如果文件不存在,則打開錯誤,會拋出一個IOError錯誤
file_content = file.read() #讀取文件中的數據並以字符串的形式返回到內存中
二、關閉文件
file = open(...)
file.close()
由於文件讀取可能存在拋出IOError錯誤,所以一旦拋出此錯誤,那麽後續的file.close()則得不到調用,所以應該將讀文件放在try...except..finally中
Python中提供了一種簡單的方法,打開文件,其效果是和使用try...except...是一樣的,但代碼將更加簡潔且不必調用close()關閉文件的方法,例如:
with open(...) as file1:
print(f.read())
三、讀取文件的大小
如果文件較小,則可以方便的使用read()函數,而如果文件較大的話,則無法一次性的全部讀取到內存中,那麽則可以使用:read(size)方法來限制讀取文件的大小或者也可以使用readline()方法
四、讀取二進制文件
file1 = open(file_path,file_mode) #其中file_mode寫為:rb 即可
五、字符編碼
如果要讀取非UTF-8的文本文件,則在打開文件時可以通過encoding指定其編碼,例如:file = open(file_path,file_mode,encoding="gbk"),也可以通過errors="ignore"來忽略錯誤的編碼字符
六、寫文件
在Python中寫文件的讀取模式為:w、wb
在Python中寫文件時數據並不會直接一個一個寫入文件,而是先在內存中的緩存區中存儲起來,直到一定程度或者一定狀態再將文件寫到硬盤中去,在寫文件時一定要close(),因此只有調用此函數,Python才保證將所有的文件寫入到硬盤中
在Python中如果要寫入特定編碼的文件,可以在open()函數中通過encoding關鍵字來指定其編碼
七、操作內存中的str與bytes
對數據的讀和寫不一定是文件,也可以是讀寫內存中的值
Python中使用StringIO可以在內存中讀寫字符串的相關數據
from io import StringIO
str_io = StringIO()
str_io.write("hello")
str_io.write(‘‘)
str_io.writelines("world")
print(str_io.getvalue())
可以通過getvalue()方法獲取寫入後的str_io
from io import BytesIO
bytes_io = BytesIO()
bytes_io.write("hello")
bytes_io.write("中文".encode("utf-8"))
print(bytes_io.getvalue())
Python學習筆記(十三)