使用python進(jìn)行文件處理的庫(kù)存管理
使用 Tkinter 的庫(kù)存管理系統(tǒng)項(xiàng)目
將新產(chǎn)品添加到庫(kù)存
此函數(shù)將新的庫(kù)存條目添加到文本文件中。它從輸入字段檢索項(xiàng)目名稱(chēng)和數(shù)量,以追加模式打開(kāi)文件,并寫(xiě)入 item_name、item_qty。然后它會(huì)清除輸入字段。
def add_inventory(): item_name = item_name_entry.get() item_qty = int(item_qty_entry.get()) with open('inventory.txt', 'a') as file: file.write(f'{item_name},{item_qty}\n') item_name_entry.delete(0, tk.END) item_qty_entry.delete(0, tk.END)
更新庫(kù)存
此函數(shù) update_inventory() 根據(jù)給定的輸入更新值更新現(xiàn)有的 item_name 和 item_qty 。它以寫(xiě)入模式打開(kāi)文件并從當(dāng)前清單中讀取數(shù)據(jù)。它循環(huán)遍歷每一行,查找與 item_name 的匹配項(xiàng),如果找到則更新記錄。
def update_inventory(): item_name = item_name_entry.get() item_qty = int(item_qty_entry.get()) with open('inventory.txt', 'r') as file: inventory_data = file.readlines() with open('inventory.txt', 'w') as file: for line in inventory_data: name, qty = line.strip().split(',') if name == item_name: file.write(f'{name},{item_qty}\n') else: file.write(line) item_name_entry.delete(0, tk.END) item_qty_entry.delete(0, tk.END)
搜索并顯示當(dāng)前庫(kù)存
該函數(shù)從需要搜索的輸入字段中提取 item_name 。當(dāng)以只讀模式打開(kāi)時(shí),它會(huì)迭代 inventory.txt 文件的每一行。在這里,如果商品名稱(chēng)與搜索名稱(chēng)匹配,我們將使用 result_label 顯示商品名稱(chēng)和金額。
def search_inventory(): search_name = item_name_entry.get() with open('inventory.txt', 'r') as file: for line in file: name, qty = line.strip().split(',') if name == search_name: result_label.config(text=f'{name} - {qty}') return result_label.config(text=f'{search_name} not found in inventory.') item_name_entry.delete(0, tk.END)
從庫(kù)存中移除物品
remove_inventory() 函數(shù)從 inventory.txt 文件中刪除特定的庫(kù)存條目。該函數(shù)檢索要從輸入字段中刪除的項(xiàng)目名稱(chēng)。它以讀取模式打開(kāi) inventory.txt 文件,并將所有庫(kù)存數(shù)據(jù)讀入列表中。然后以寫(xiě)入模式再次打開(kāi)該文件。它會(huì)迭代庫(kù)存數(shù)據(jù)中的每一行,檢查商品名稱(chēng)是否與要?jiǎng)h除的商品名稱(chēng)匹配,然后跳過(guò)寫(xiě)入該行。
def remove_inventory(): remove_name = item_name_entry.get() with open('inventory.txt', 'r') as file: inventory_data = file.readlines() with open('inventory.txt', 'w') as file: for line in inventory_data: name, qty = line.strip().split(',') if name != remove_name: file.write(line) item_name_entry.delete(0, tk.END) item_qty_entry.delete(0, tk.END)
生成完整的庫(kù)存清單
generate_inventory () 函數(shù)從文本文件生成庫(kù)存條目的完整列表。它讀取文件并將庫(kù)存數(shù)據(jù)存儲(chǔ)在列表中。然后,庫(kù)存數(shù)據(jù)將連接成帶有換行符的字符串。最后,該字符串顯示在result_label中以顯示完整的庫(kù)存列表。
def generate_inventory(): with open('inventory.txt', 'r') as file: inventory_data = file.readlines() inventory_text = '\n'.join(inventory_data) result_label.config(text=inventory_text)
完整代碼
import tkinter as tk # 添加新庫(kù)存分錄的功能 def add_inventory(): item_name = item_name_entry.get() item_qty = int(item_qty_entry.get()) with open('inventory.txt', 'a') as file: file.write(f'{item_name},{item_qty}\n') item_name_entry.delete(0, tk.END) item_qty_entry.delete(0, tk.END) # 更新現(xiàn)有庫(kù)存分錄的功能 def update_inventory(): item_name = item_name_entry.get() item_qty = int(item_qty_entry.get()) with open('inventory.txt', 'r') as file: inventory_data = file.readlines() with open('inventory.txt', 'w') as file: for line in inventory_data: name, qty = line.strip().split(',') if name == item_name: file.write(f'{name},{item_qty}\n') else: file.write(line) item_name_entry.delete(0, tk.END) item_qty_entry.delete(0, tk.END) # 用于搜索和顯示庫(kù)存條目的功能 def search_inventory(): search_name = item_name_entry.get() with open('inventory.txt', 'r') as file: for line in file: name, qty = line.strip().split(',') if name == search_name: result_label.config(text=f'{name} - {qty}') return result_label.config(text=f'{search_name} not found in inventory.') item_name_entry.delete(0, tk.END) # 刪除現(xiàn)有庫(kù)存分錄的功能 def remove_inventory(): remove_name = item_name_entry.get() with open('inventory.txt', 'r') as file: inventory_data = file.readlines() with open('inventory.txt', 'w') as file: for line in inventory_data: name, qty = line.strip().split(',') if name != remove_name: file.write(line) item_name_entry.delete(0, tk.END) item_qty_entry.delete(0, tk.END) # 用于生成完整庫(kù)存列表的函數(shù) def generate_inventory(): with open('inventory.txt', 'r') as file: inventory_data = file.readlines() inventory_text = '\n'.join(inventory_data) result_label.config(text=inventory_text) # 創(chuàng)建主窗口 root = tk.Tk() root.title("Inventory Management") # 輸入字段 item_name_label = tk.Label(root, text="Item Name:") item_name_label.grid(row=0, column=0, padx=5, pady=5) item_name_entry = tk.Entry(root) item_name_entry.grid(row=0, column=1, padx=5, pady=5) item_qty_label = tk.Label(root, text="Item Quantity:") item_qty_label.grid(row=1, column=0, padx=5, pady=5) item_qty_entry = tk.Entry(root) item_qty_entry.grid(row=1, column=1, padx=5, pady=5) # 創(chuàng)建按鈕 add_button = tk.Button(root, text="Add Inventory", command=add_inventory) add_button.grid(row=2, column=0, padx=5, pady=5) update_button = tk.Button(root, text="Update Inventory", command=update_inventory) update_button.grid(row=2, column=1, padx=5, pady=5) search_button = tk.Button(root, text="Search Inventory", command=search_inventory) search_button.grid(row=3, column=0, padx=5, pady=5) remove_button = tk.Button(root, text="Remove Inventory", command=remove_inventory) remove_button.grid(row=3, column=1, padx=5, pady=5) generate_button = tk.Button(root, text="Generate Inventory", command=generate_inventory) generate_button.grid(row=4, column=0, padx=5, pady=5) result_label = tk.Label(root, text="List") result_label.grid(row=5, column=0, padx=5, pady=5) root.mainloop()
以上就是使用python進(jìn)行文件處理的庫(kù)存管理的詳細(xì)內(nèi)容,更多關(guān)于python庫(kù)存管理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
關(guān)于tf.matmul() 和tf.multiply() 的區(qū)別說(shuō)明
這篇文章主要介紹了關(guān)于tf.matmul() 和tf.multiply() 的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06如何使用django的MTV開(kāi)發(fā)模式返回一個(gè)網(wǎng)頁(yè)
這篇文章主要介紹了如何使用django的MTV開(kāi)發(fā)模式返回一個(gè)網(wǎng)頁(yè),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07python爬取股票最新數(shù)據(jù)并用excel繪制樹(shù)狀圖的示例
這篇文章主要介紹了python爬取股票最新數(shù)據(jù)并用excel繪制樹(shù)狀圖的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03詳解pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題
本文主要介紹了pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02python將字符串轉(zhuǎn)變成dict格式的實(shí)現(xiàn)
這篇文章主要介紹了python將字符串轉(zhuǎn)變成dict格式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Python實(shí)現(xiàn)Socket.IO的在線(xiàn)游戲場(chǎng)景方式
本文介紹了Socket.IO的基本概念、應(yīng)用場(chǎng)景,并通過(guò)一個(gè)簡(jiǎn)單的多人在線(xiàn)實(shí)時(shí)對(duì)戰(zhàn)游戲案例,展示了如何使用Python和Socket.IO庫(kù)實(shí)現(xiàn)實(shí)時(shí)通信,Socket.IO的核心是事件驅(qū)動(dòng)模型,支持WebSocket協(xié)議,并在不支持的情況下回退到其他傳輸方式2025-01-01Python數(shù)據(jù)分析之?Matplotlib?餅圖繪制
這篇文章主要介紹了Python數(shù)據(jù)分析之?Matplotlib?餅圖繪制,文章基于python的相關(guān)資料展開(kāi)詳細(xì)的餅圖繪制,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05python tkinter 設(shè)置窗口大小不可縮放實(shí)例
這篇文章主要介紹了python tkinter 設(shè)置窗口大小不可縮放實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python爬蟲(chóng) bilibili視頻彈幕提取過(guò)程詳解
這篇文章主要介紹了Python爬蟲(chóng) bilibili視頻彈幕提取過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07