1. 程式人生 > >Python學習筆記(十三)

Python學習筆記(十三)

應該 成功 緩存 with open 文件 學習 編碼 打開 gbk

一、讀文件

  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學習筆記(十三)