【python】09_項目實例_雲主機管理系統+prettytable展示

項目背景:
騰訊雲服務器 CVM(Cloud Virtual Machine)是騰訊雲提供的可擴展的計算服務。
使用 CVM 避免了使用傳統服務器時需要預估資源用量及前期投入,幫助您在短時間內快速啓動任意數量的雲服務器並即時部署應用程序。騰訊雲 CVM 支持用戶自定義一切資源:CPU、內存、硬盤、網絡、安全等等,並可以在需求發生變化時輕鬆地調整它們。

需求:
******************************************
***************雲主機管理系統 ****************
******************************************
1). 添加雲主機
2). 刪除雲主機
3). 修改雲主機
4). 查看雲主機
0). 退出系統
******************************************

雲主機的屬性信息:
id: 遞增,主機id
IPv4: 主機IP
disk: 主機硬盤大小
memory: 主機內存大小
name: 主機別名

初版

from collections import namedtuple

prompt = """
   ******************************************
    ***************雲主機管理系統 ****************
    ******************************************
            1). 添加雲主機
            2). 刪除雲主機
            3). 修改雲主機
            4). 查看雲主機
            0). 退出系統

    ******************************************
    請輸入您的選擇:
"""
id = 0
host_db = []
Host= namedtuple('Host_Info','id IPv4 disk memory name')

while True:
    choice = input(prompt)
    if choice == '1':
        print('添加雲主機'.center(40,'*'))
        id += 1
        IPv4 = input('主機IP(eg.172.25.254.1)>>')
        disk = input('主機硬盤大小(eg.500G)>>')
        memory = input('主機內存大小(eg.4G)>>')
        name = input('主機別名(eg.Web服務器)>>')
        host = Host(id=id,IPv4=IPv4,disk=disk,memory=memory,name=name)
        host_db.append(host)
        print('雲主機添加成功'.center(40,'#'))

    elif choice == '2':
        print('刪除雲主機'.center(40, '#'))
        delete_id = int(input('請輸入您要刪除雲主機的id(eg.1)>>'))
        for host in host_db:
            if delete_id == host.id:
                host_db.remove(host)
                print('刪除雲主機成功'.center(40,'#'))
                break
        else:
            print('您要刪除的id號不存在,請重新輸入>>')

    elif choice == '3':
        pass
    elif choice == '4':
        print('查看雲主機'.center(40, '#'))
        for host in host_db:
            print(host)
    elif choice == '0':
        print('您正在退出系統'.center(40,'#'))
        exit(0)
    else:
        print('請輸入正確的選項!')

測試如下:

1.添加一條‘web服務器’雲主機信息
在這裏插入圖片描述
2.查看雲主機信息
在這裏插入圖片描述
可以看到,顯示出來的信息對用戶並不友好。這裏我們介紹一個prettytable模塊。prettytable 是python中的一個第三方庫,可用來生成美觀的ASCII格式的表格,十分實用。首先是pip install安裝這個第三方庫,在使用時,直接import導入。

prettytable模塊引入

#假如host_db中存儲兩條雲主機信息
host_db = [
    ['1','172.25.254.1','500G','4G','數據庫服務器'],
    ['2','172.25.254.2','500G','8G','Web服務器']
]

#實例化host_table對象(創建表,並用field_names指定表頭信息)
host_table =PrettyTable(field_names=['id','IPv4','disk','memory','name']) 
for host in host_db:
	#按行添加數據
    host_table.add_row(host)
print(host_table)

可以看到最後的顯示非常簡潔有序。
在這裏插入圖片描述

最終版

from collections import namedtuple
from prettytable import PrettyTable

# 雲主機管理系統菜單欄提示
prompt = """
   ******************************************
    ***************雲主機管理系統 ****************
    ******************************************
            1). 添加雲主機
            2). 刪除雲主機
            3). 修改雲主機
            4). 查看雲主機
            0). 退出系統

    ******************************************
    請輸入您的選擇:
"""
# 1). 選擇哪種數據類型存儲雲主機信息? 選擇列表
hosts_db = []   # 存儲所有主機信息的數據庫列表
id = 0          # 雲主機的id號, 是依次遞增的
# 通過命名元組定義主機需要存儲的信息
Host= namedtuple('Host_Info','id IPv4 disk memory name')

# 2). 死循環,接收用戶選擇
while True:
    choice = input(prompt)
    # 如果用戶選擇爲1, 則添加雲主機
    if choice == '1':
        print('添加雲主機'.center(40,'*'))
        id += 1  #id遞增
        IPv4 = input('主機IP(eg.172.25.254.1)>>')
        disk = input('主機硬盤大小(eg.500G)>>')
        memory = input('主機內存大小(eg.4G)>>')
        name = input('主機別名(eg.Web服務器)>>')
        # 將主機信息實例化爲host對象
        host = Host(id=id,IPv4=IPv4,disk=disk,memory=memory,name=name)
        #添加到主機信息的數據庫列表中
        host_db.append(host)
        print('雲主機添加成功'.center(40,'#'))

    elif choice == '2':
        print('刪除雲主機'.center(40, '#'))
        #注意要將delete_id接收到的字符串轉換爲int類型,否則if delete_id == host.id這條語句永遠不成立。
        delete_id = int(input('請輸入您要刪除雲主機的id(eg.1)>>'))
        for host in host_db:
            if delete_id == host.id:
                host_db.remove(host)
                print('刪除雲主機成功'.center(40,'#'))
                break
        else:
            print('您要刪除的id號不存在,請重新輸入>>')

# 如果我們的目標是定義一個高效的數據結構,而且將來會修改各種實例屬性,那麼使用 namedtuple 並不是最佳選擇
        # 修改雲主機暫時不處理
    elif choice == '3':
        pass
        
    elif choice == '4':
        print('查看雲主機'.center(40, '#'))
        # 創建表並指定表頭信息和格式
        host_table = PrettyTable(field_names=['id', 'IPv4', 'disk', 'memory', 'name'])
        # 遍歷主機信息
        for host in host_db:
        	# 按行添加數據
            host_table.add_row(host)
        # 打印表格
        print(host_table)
    elif choice == '0':
        print('您正在退出系統'.center(40,'#'))
        exit(0)
    else:
        print('請輸入正確的選項!')

測試如下:
1.添加一個‘web服務器’雲主機
在這裏插入圖片描述
2.添加一個‘數據庫服務器’雲主機
在這裏插入圖片描述
3.查看雲主機信息
在這裏插入圖片描述
4.刪除id爲2的雲主機信息
在這裏插入圖片描述
5.查看雲主機信息
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章