Python文件讀寫在“簡易記事本”項目中的應用

Python文件讀寫在“簡易記事本”項目中的應用

文件讀寫是“簡易記事本”項目實現數據持久化的關鍵部分。在本節中,我們將逐步拆解記事本的功能,詳細講解與文件讀寫相關的代碼,并結合實際操作幫助讀者更好地理解文件操作的核心知識點。

功能一:加載已有的筆記

當程序啟動時,需要從文件中加載已有的筆記內容,以便用戶可以繼續管理先前保存的筆記。

相關代碼

# 定義保存筆記的文件路徑
FILE_PATH = "notes.txt"# 讀取文件內容并返回為列表
def load_notes():"""從文件中加載筆記內容。如果文件不存在,返回空列表。"""try:# 以只讀模式打開文件with open(FILE_PATH, "r", encoding="utf-8") as file:notes = file.readlines()  # 按行讀取內容,返回列表return [note.strip() for note in notes]  # 去除換行符后返回except FileNotFoundError:# 文件不存在時返回空列表print("文件不存在,未加載任何筆記。")return []

功能解析

  1. 文件路徑設置

    • FILE_PATH 是保存筆記的文件路徑,方便統一管理。如果文件存儲在其他位置,可以修改為絕對路徑。
  2. 打開文件

    • 使用 open(FILE_PATH, "r", encoding="utf-8") 以只讀模式打開文件。utf-8 編碼確保中文字符正常顯示。
  3. 讀取文件內容

    • 使用 file.readlines() 方法按行讀取文件中的所有內容,返回一個列表,每行對應列表中的一個元素。
  4. 去除換行符

    • 使用列表推導式 [note.strip() for note in notes] 去除每行末尾的換行符,確保數據整潔。
  5. 文件不存在的處理

    • 捕獲 FileNotFoundError 異常,提示用戶文件不存在,并返回空列表。

實操演示

  • 假設文件 notes.txt 包含以下內容:
    買牛奶
    早起鍛煉
    閱讀一本書
    
  • 調用 load_notes() 函數將返回:
    ["買牛奶", "早起鍛煉", "閱讀一本書"]
    
功能二:保存新筆記到文件

用戶新增的筆記需要保存到文件中,以確保程序關閉后數據不會丟失。

相關代碼

# 將新的筆記寫入文件
def save_note(note):"""將新筆記保存到文件。如果文件不存在,將自動創建。"""with open(FILE_PATH, "a", encoding="utf-8") as file:file.write(note + "\n")  # 追加新筆記并換行print(f"筆記已保存:{note}")

功能解析

  1. 追加模式寫入

    • 使用 open(FILE_PATH, "a", encoding="utf-8") 以追加模式打開文件。如果文件不存在,Python會自動創建文件。
  2. 寫入新筆記

    • 使用 file.write(note + "\n") 將筆記內容寫入文件,并在末尾添加換行符,確保每條筆記占據一行。
  3. 用戶反饋

    • 每次寫入后打印一條消息,提示用戶筆記已成功保存。

實操演示

  • 新增筆記 完成代碼編寫,調用 save_note("完成代碼編寫") 后,文件 notes.txt 的內容更新為:
    買牛奶
    早起鍛煉
    閱讀一本書
    完成代碼編寫
    
功能三:顯示已有筆記

用戶需要查看文件中保存的所有筆記內容,系統需要從文件加載并格式化展示。

相關代碼

# 顯示所有筆記
def display_notes(notes):"""顯示所有已保存的筆記。"""if not notes:print("當前沒有任何筆記。")else:print("已保存的筆記如下:")for index, note in enumerate(notes, start=1):print(f"{index}. {note}")

功能解析

  1. 檢查筆記列表是否為空

    • 使用 if not notes 判斷筆記列表是否為空,若為空則提示用戶沒有任何筆記。
  2. 逐條顯示筆記

    • 使用 enumerate 為每條筆記添加序號,并打印出整齊的格式化內容。

實操演示

  • 假設筆記列表為 ["買牛奶", "早起鍛煉", "閱讀一本書"],調用 display_notes 函數后輸出:
    已保存的筆記如下:
    1. 買牛奶
    2. 早起鍛煉
    3. 閱讀一本書
    

總結

通過上述逐步拆解和詳細講解,讀者可以清晰地理解文件讀寫操作在“簡易記事本”項目中的應用。文件操作是實現數據持久化的核心,同時也是Python編程中非常重要的技能。通過實操練習,能夠幫助讀者更好地掌握這一知識點。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64173.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64173.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64173.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Agent】AutoGen Studio2.0開源框架-UI層環境安裝+詳細操作教程(從0到1帶跑通智能體AutoGen Studio)

💥 歡迎來到我的博客!很高興能在這里與您相遇! 首頁:GPT-千鑫 – 熱愛AI、熱愛Python的天選打工人,活到老學到老!!!導航 - 人工智能系列:包含 OpenAI API Key教程, 50個…

三層交換機配置

一,三層交換 概念:三層交換技術就是:二層交換技術三層轉發技術(路由器功能)。它解決了局域網中網段劃分之后,網段中子網必須依賴路由器進行管理的局面,解決了傳統路由器低速,復雜所造成的網絡瓶頸問題。 …

js單例模式

單例模式是一種常見的設計模式,在JavaScript中也有廣泛應用,以下是關于它的詳細介紹: 定義 單例模式是一種創建型設計模式,它確保一個類只有一個實例,并提供一個全局訪問點來訪問該實例。在JavaScript中,…

【Golang 面試題】每日 3 題(六)

?個人博客:Pandaconda-CSDN博客 📣專欄地址:http://t.csdnimg.cn/UWz06 📚專欄簡介:在這個專欄中,我將會分享 Golang 面試中常見的面試題給大家~ ??如果有收獲的話,歡迎點贊👍收藏…

SQL Server數據庫多主模式解決方案

SQL Server 本身并不直接支持多主模式(Multi-Master Replication),即多個數據庫實例可以同時進行寫操作,并且這些更改會自動同步到其他實例。不過,SQL Server 提供了多種高可用性和復制解決方案,可以實現類似多主模式的功能。以下是幾種常見的方法: 1. Always On 可用性…

連鎖餐飲行業數據可視化分析方案

引言 隨著連鎖餐飲行業的迅速發展,市場競爭日益激烈。企業需要更加精準地把握運營狀況、消費者需求和市場趨勢,以制定科學合理的決策,提升競爭力和盈利能力。可視化數據分析可以幫助連鎖餐飲企業整合多源數據,通過直觀、動態的可…

Zookeeper JavaAPI操作(Curator API常用操作)

構建項目 zk版本:3.5.7,引入4.0.0的curator版本,Curator依賴的版本只能比zookeeper依賴的版本高。 Curator簡單介紹 Curator是Netflix公司開源的一套zookeeper客戶端框架,解決了很多Zookeeper客戶端非常底層的細節開發工作&…

可搜索的下拉選擇框:filterable屬性詳解

在前端開發中,下拉選擇框(Dropdown Select)是一個常見的UI組件,它允許用戶從一組預定義的選項中選擇一個或多個值。然而,當選項數量較多時,手動查找特定的選項可能會變得繁瑣。為了解決這個問題&#xff0c…

精選9個自動化任務的Python腳本精選

大家好,我是老鄧,今天我們來一起學習如何用Python進行一些常見的自動化操作,涉及文件處理、網絡交互等實用技巧。即使你沒有任何Python基礎也沒關系,我會用最通俗易懂的語言來講解。 1. 對目錄中的文件進行排序 import osdef so…

滑動窗口 + 算法復習

維護一個滿足條件的窗口大小&#xff0c;然后進行雙指針移動 1.最長子串 題目鏈接&#xff1a;1.最長子串 - 藍橋云課 #include<bits/stdc.h> #define int long long using namespace std; string s; int k; signed main() {int max_len0,left0;cin>>s>>k;…

PDF書籍《手寫調用鏈監控APM系統-Java版》第9章 插件與鏈路的結合:Mysql插件實現

本人閱讀了 Skywalking 的大部分核心代碼&#xff0c;也了解了相關的文獻&#xff0c;對此深有感悟&#xff0c;特此借助巨人的思想自己手動用JAVA語言實現了一個 “調用鏈監控APM” 系統。本書采用邊講解實現原理邊編寫代碼的方式&#xff0c;看本書時一定要跟著敲代碼。 作者…

關于Vue的子組件改變父組件傳來的值

一、組件直接傳值 大家都知道父子組件傳值的方案&#xff0c;有以下幾個&#xff0c;不再詳細敖述 Props&#xff1a;父組件向子組件傳遞數據 $emit&#xff1a;子組件通過自定義事件向父組件傳遞數據 .sync修飾符&#xff1a;一個方便且強大的工具&#xff0c;可以簡化父子組…

Flink的Watermark水位線詳解

一、Flink的時間語義 Flink有如下三種時間語義&#xff1a; Flink的三種時間語義-CSDN博客 在實際應用中&#xff0c;一般會采用事件時間語義。而正如前面所說的&#xff0c;事件時間語義需要等窗口的數據全部到齊了&#xff0c;才能進行窗口計算。那么&#xff0c;什么時候數…

ES學習Promise對象(九)

這里寫目錄標題 一、概念二、示例基本使用使用 Promise 對象封裝Ajaxthen() 方法catch() 方法 一、概念 簡單說就是一個容器&#xff0c;里面保存著某個未來才會結束的事件&#xff08;通常是一個異步操作&#xff09;的結果。Promise 是一個對象&#xff0c;Promise 提供統一…

Kibana:LINUX_X86_64 和 DEB_X86_64兩種可選下載方式的區別

最近需要在vm&#xff08;操作系統是 Ubuntu 22.04.4 LTS&#xff0c;代號 Jammy。這是一個基于 x86_64 架構的 Linux 發行版&#xff09;上安裝一個7.17.8版本的Kibana&#xff0c;并且不采用docker方式。 在下載的時候發現有以下兩個選項&#xff0c;分別是 LINUX_X86_64 和 …

CMake 構建項目并整理頭文件和庫文件

本文將介紹如何使用 CMake 構建項目、編譯生成庫文件&#xff0c;并將頭文件和庫文件整理到統一的目錄中以便在其他項目中使用。 1. 項目結構 假設我們正在構建一個名為 rttr 的開源庫&#xff0c;初始的項目結構如下&#xff1a; D:\WorkCode\Demo\rttr-master\|- src\ …

【FAQ】HarmonyOS SDK 閉源開放能力 — Vision Kit(2)

1.問題描述&#xff1a; 人臉活體檢測返回上一頁App由沉浸式變為非沉浸式多了上下安全區域。 解決方案&#xff1a; 檢測結束后需要自己去設置沉浸式配置。 2.問題描述&#xff1a; Vision Kit文字識別是本地識別&#xff0c;還是上傳至服務器&#xff0c;由服務器來識別文…

AIA - IMSIC之二(附IMSIC處理流程圖)

本文屬于《 RISC-V指令集基礎系列教程》之一,歡迎查看其它文章。 1 ???????通過IMSIC接收外部中斷的CSR 軟件通過《AIA - 新增的CSR》描述的CSR來訪問IMSIC。 machine level 的 CSR 與 IMSIC 的 machine level interrupt file 可相互互動;而 supervisor level 的 CSR…

Vue單頁應用的配置

前面通過幾篇文章了解并掌握了 Vue 項目構建及運行的前期工作 。接下來我們可以走進 Vue 項目的內部&#xff0c;一探其內部配置的基本構成。 1. 路由配置 由于 Vue 這類型的框架都是以一個或多個單頁構成&#xff0c;在單頁內部跳轉并不會重新渲染 HTML 文件&#xff0c;其路…

CocosCreator-引擎案例-TS:spine

工程1&#xff1a;LoadSpine&#xff1a;簡單加載spine資源 建立工程&#xff0c;在層級上建立一個空對象&#xff0c;改名spine 在spine上添加spine組件&#xff1a; 添加組件>渲染組件>spine 在spine上掛上腳本loadspine onLoad () {cc.resources.load(loadSpine/ali…