關於 for 循環 + with 向文件寫內容的幾點理解

  import datetimeide

  import timespa

  # 最後文件中只寫入了最後一次的 msg(?)操作系統

  for i in range(0,5):進程

  ctime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')內存

  msg = f"{i} - {ctime}"字符串

  with open('test.txt',mode='w+',encoding='utf8') as f:it

  f.write(msg)class

  time.sleep(5)test

  else:import

  print('--------over')

  # 寫入5次,最後文件中每次寫入的內容會覆蓋前一次內容

  for i in range(0,5):

  ctime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

  msg = f"{i} - {ctime}"

  with open('test.txt',mode='w+',encoding='utf8') as f:

  f.write(msg)

  time.sleep(5)

  else:

  print('--------over')

  # 寫入5次,最後文件中每次寫入的內容會覆蓋前一次內容

  for i in range(0,5):

  ctime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

  msg = f"{i} - {ctime}"

  with open('test.txt',mode='w+',encoding='utf8') as f:

  f.write(msg)

  f.flush() # 使用 flush()

  time.sleep(5)

  else:

  print('--------over')

  # 文件中寫入了5條數據,寫入時間爲文件關閉時,一次性寫入5條數據

  with open('test.txt', mode='w+', encoding='utf8') as f:

  for i in range(0,5):

  ctime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

  msg = f"{i} - {ctime}\n"

  f.write(msg)

  time.sleep(5)

  else:無錫婦科檢查醫院 http://www.87554006.com/

  print('--------over')

  # 文件中前後寫入了5條數據,寫入時間爲每次調用 flush 後

  with open('test.txt', mode='w+', encoding='utf8') as f:

  for i in range(0,5):

  ctime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

  msg = f"{i} - {ctime}\n"

  f.write(msg)

  f.flush() # 使用 flush()

  time.sleep(5)

  else:

  print('--------over')

  # mode 爲寫模式時,不能讀取文件內容(或者說讀取的文件內容爲空)

  with open('test.txt', mode='w+', encoding='utf8') as f:

  r = f.read()

  print(r)

  注意:

  因爲緩衝機制,實際上字符串可能並無當即寫入到文件中,除非緩衝區滿時或調用 flush()或 close()方法後。

  通常的文件流操做都包含緩衝機制,write方法並不直接將數據寫入文件,而是先寫入內存中特定的緩衝區。

  正常狀況下緩衝區滿時,操做系統會自動將緩衝數據寫入到文件中。

  flush 方法是用來刷新緩衝區的,即將緩衝區中的數據馬上寫入文件,同時清空緩衝區。

  至於 close 方法,原理是內部先調用 flush 方法來刷新緩衝區,再執行關閉操做,這樣即便緩衝區數據未滿也能保證數據的完整性。

  若是進程意外退出或正常退出時而未執行文件的close方法,緩衝區中的內容將會丟失。

相關文章
相關標籤/搜索