第一关:存储信息展示
任务描述
本关任务:编写一个程序,该程序能根据用户的输入显示对于的存储信息。
相关知识
为了完成本关任务,你需要掌握:1.如何利用Python
查看存储信息。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 编写一个程序,该程序能根据用户的输入显示对于的存储信息。如输入
1
显示主存信息、输入2
显示交换区信息、输入3
显示分区信息、输入0
程序结束。
如图所示:
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
预期输出答案正确!
参考答案
import psutil
# 写入文件函数
def write_text():
x = open("./storage_information_acquisition/结果/信息.txt",'w',encoding='utf-8')
return x
# 此函数将容量信息更改为 kb、mb、gb 为单位
def BtoKMG(n):
#*********** Begin **********#
if n>=1024**3:
return str(round(n/1024**3, 1))+' GB'
elif n>=1024**2:
return str(round(n/1024**2, 1))+' MB'
else:
return str(round(n/1024**1, 1))+' KB'
#*********** End **********#
# 此函数将主存信息写入文件
def printMemInfo():
#*********** Begin **********#
m = psutil.virtual_memory()
# 使用写入文件函数将结果写入文本文件
# 注意:冒号请使用中文冒号,主存信息请使用\t分割(如:总容量: 10GB),末尾请使用换行符换行
file = write_text()
file.write('-'*5+ '主存信息'+ '-'*5+"\n")
file.write('总容量:\t'+ BtoKMG(m.total)+"\n")
file.write('已用容量:\t'+ BtoKMG(m.used)+"\n")
file.write('剩余容量:\t'+ BtoKMG(m.free)+"\n")
file.write('-'*18)
#*********** End **********#
return True
# 此函数将交换区信息写入文件
def printSwapMemInfo():
#*********** Begin **********#
m = psutil.swap_memory()
# 使用写入文件函数将结果写入文本文件
# 注意:冒号请使用中文冒号,交换区信息请使用\t分割(如:总容量: 10GB),末尾请使用换行符换行
file = write_text()
file.write('-'*4+ '交换区信息'+ '-'*4 +"\n")
file.write('总容量:\t'+BtoKMG(m.total)+"\n")
file.write('已用容量:\t'+BtoKMG(m.used)+"\n")
file.write('剩余容量:\t'+BtoKMG(m.free)+"\n")
file.write('-'*18)
#*********** End **********#
return True
# 此函数将分区信息写入文件
def printDiskInfo():
#*********** Begin **********#
# 使用写入文件函数将结果写入文本文件
# 注意 每个分区信息之间请用 \t 进行分割,末尾请使用换行符
file = write_text()
file.write('-'*25+ '分区信息'+ '-'*25 +"\n")
file.write('分区\t类型\t总容量\t已用容量\t剩余容量\t已用比例'+"\n")
for part in psutil.disk_partitions():
if not 'cdrom' in part.opts:
usage = psutil.disk_usage(part.mountpoint)
file.write(part.device + '\t' +
part.fstype + '\t' +
BtoKMG(usage.total) + '\t' +
BtoKMG(usage.used) + '\t' +
BtoKMG(usage.free) + '\t' +
str(usage.percent)+'%'+"\n")
file.write('-'*58)
#*********** End **********#
return True