使用python進行文件處理的庫存管理
使用 Tkinter 的庫存管理系統(tǒng)項目
將新產(chǎn)品添加到庫存
此函數(shù)將新的庫存條目添加到文本文件中。它從輸入字段檢索項目名稱和數(shù)量,以追加模式打開文件,并寫入 item_name、item_qty。然后它會清除輸入字段。
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)
更新庫存
此函數(shù) update_inventory() 根據(jù)給定的輸入更新值更新現(xiàn)有的 item_name 和 item_qty 。它以寫入模式打開文件并從當(dāng)前清單中讀取數(shù)據(jù)。它循環(huán)遍歷每一行,查找與 item_name 的匹配項,如果找到則更新記錄。
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)前庫存
該函數(shù)從需要搜索的輸入字段中提取 item_name 。當(dāng)以只讀模式打開時,它會迭代 inventory.txt 文件的每一行。在這里,如果商品名稱與搜索名稱匹配,我們將使用 result_label 顯示商品名稱和金額。
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)
從庫存中移除物品
remove_inventory() 函數(shù)從 inventory.txt 文件中刪除特定的庫存條目。該函數(shù)檢索要從輸入字段中刪除的項目名稱。它以讀取模式打開 inventory.txt 文件,并將所有庫存數(shù)據(jù)讀入列表中。然后以寫入模式再次打開該文件。它會迭代庫存數(shù)據(jù)中的每一行,檢查商品名稱是否與要刪除的商品名稱匹配,然后跳過寫入該行。
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)
生成完整的庫存清單
generate_inventory () 函數(shù)從文本文件生成庫存條目的完整列表。它讀取文件并將庫存數(shù)據(jù)存儲在列表中。然后,庫存數(shù)據(jù)將連接成帶有換行符的字符串。最后,該字符串顯示在result_label中以顯示完整的庫存列表。
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 # 添加新庫存分錄的功能 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)有庫存分錄的功能 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) # 用于搜索和顯示庫存條目的功能 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)有庫存分錄的功能 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) # 用于生成完整庫存列表的函數(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進行文件處理的庫存管理的詳細內(nèi)容,更多關(guān)于python庫存管理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
關(guān)于tf.matmul() 和tf.multiply() 的區(qū)別說明
這篇文章主要介紹了關(guān)于tf.matmul() 和tf.multiply() 的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06如何使用django的MTV開發(fā)模式返回一個網(wǎng)頁
這篇文章主要介紹了如何使用django的MTV開發(fā)模式返回一個網(wǎng)頁,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07python爬取股票最新數(shù)據(jù)并用excel繪制樹狀圖的示例
這篇文章主要介紹了python爬取股票最新數(shù)據(jù)并用excel繪制樹狀圖的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03詳解pyqt中解決國際化tr()函數(shù)不起作用的問題
本文主要介紹了pyqt中解決國際化tr()函數(shù)不起作用的問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02python將字符串轉(zhuǎn)變成dict格式的實現(xiàn)
這篇文章主要介紹了python將字符串轉(zhuǎn)變成dict格式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Python實現(xiàn)Socket.IO的在線游戲場景方式
本文介紹了Socket.IO的基本概念、應(yīng)用場景,并通過一個簡單的多人在線實時對戰(zhàn)游戲案例,展示了如何使用Python和Socket.IO庫實現(xiàn)實時通信,Socket.IO的核心是事件驅(qū)動模型,支持WebSocket協(xié)議,并在不支持的情況下回退到其他傳輸方式2025-01-01Python數(shù)據(jù)分析之?Matplotlib?餅圖繪制
這篇文章主要介紹了Python數(shù)據(jù)分析之?Matplotlib?餅圖繪制,文章基于python的相關(guān)資料展開詳細的餅圖繪制,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05python tkinter 設(shè)置窗口大小不可縮放實例
這篇文章主要介紹了python tkinter 設(shè)置窗口大小不可縮放實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03