请求协助:将网络信息文件内容展示到Python GUI网格中
帮你轻松实现网络信息的表格展示
嘿,作为系统管理员能自己写Python脚本收集网络信息已经很厉害了!我完全懂你手动看文件的麻烦,下面给你两个简单的方案,不需要复杂的GUI编程,就能把你的4个文件内容转换成你想要的网格表格——每个文件对应一行,文件里的每一行对应一列。
方案1:用tabulate库生成美观表格(推荐)
这个库专门用来生成各种样式的表格,用法超简单,只需要几步就能搞定:
第一步:安装tabulate
打开命令行,运行下面的命令(如果你用的是Python3,可能需要用pip3):
pip install tabulate
第二步:运行下面的代码
把这段代码保存成show_network_table.py,记得把file_paths里的文件名改成你实际的四个文件名称,headers改成你对应的指标名称(比如“带宽”“延迟”之类的):
from tabulate import tabulate # 替换成你实际的四个文件路径 file_paths = ["network_info_1.txt", "network_info_2.txt", "network_info_3.txt", "network_info_4.txt"] table_data = [] for file_path in file_paths: try: # 读取文件的前4行内容,自动去掉换行符 with open(file_path, 'r') as f: lines = [line.strip() for line in f.readlines()[:4]] # 如果文件行数不足4行,用空字符串补全到4列 while len(lines) < 4: lines.append("") table_data.append(lines) except FileNotFoundError: # 如果文件找不到,这一行显示提示信息 table_data.append(["文件未找到", "", "", ""]) # 替换成你实际的列标题 headers = ["指标1", "指标2", "指标3", "指标4"] # 用grid样式打印表格,就是你要的网格效果 print(tabulate(table_data, headers=headers, tablefmt="grid"))
第三步:运行脚本
在命令行里切换到脚本和文件所在的文件夹,运行:
python show_network_table.py
你就能看到整齐的网格表格啦!
方案2:纯Python实现(无需额外安装库)
如果你不想装新的库,用Python自带的功能也能实现,代码稍微长一点,但同样好用:
# 替换成你实际的四个文件路径 file_paths = ["network_info_1.txt", "network_info_2.txt", "network_info_3.txt", "network_info_4.txt"] table_data = [] for file_path in file_paths: try: with open(file_path, 'r') as f: lines = [line.strip() for line in f.readlines()[:4]] while len(lines) < 4: lines.append("") table_data.append(lines) except FileNotFoundError: table_data.append(["文件未找到", "", "", ""]) # 替换成你实际的列标题 headers = ["指标1", "指标2", "指标3", "指标4"] # 计算每列的最大宽度,让表格对齐更美观 col_widths = [] for col_idx in range(4): # 找出当前列所有内容的最大长度 max_length = max(len(str(row[col_idx])) for row in table_data + [headers]) col_widths.append(max_length + 2) # 加2是为了给内容留空格 # 打印表格边框和表头 border_line = "+" + "+".join(["-" * width for width in col_widths]) + "+" print(border_line) header_content = "|" + "|".join([title.center(width) for title, width in zip(headers, col_widths)]) + "|" print(header_content) print(border_line) # 打印每一行数据 for row in table_data: row_content = "|" + "|".join([content.ljust(width) for content, width in zip(row, col_widths)]) + "|" print(row_content) print(border_line)
同样保存成脚本运行就行,输出的表格也是标准的网格样式,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Toi Lee
相关产品推荐
相关产品推荐

