Python端口扫描程序时间格式化求助:去除毫秒并按指定格式显示
解决端口扫描的时间格式与耗时取整问题
嘿,作为Python新手能自己实现端口扫描的时间记录功能已经很棒啦!我来帮你调整成你想要的格式和耗时取整方式~
1. 格式化扫描开始时间(去掉毫秒,改为12.58.32格式)
你之前用datetime.datetime.now()会显示毫秒,其实只需要借助strftime()方法自定义时间格式即可。这个方法可以让你按照任意想要的格式输出时间:
import datetime # 记录原始开始时间(用于后续计算耗时) start_time = datetime.datetime.now() # 格式化为「时.分.秒」的形式,无毫秒 formatted_start_time = start_time.strftime("%H.%M.%S") print(f"扫描开始时间:{formatted_start_time}")
这里的格式符说明:
%H:24小时制的小时(00-23)%M:分钟(00-59)%S:秒(00-59)
用点.分隔这三个部分,就得到了你要的12.58.32样式。
2. 计算取整到秒的扫描耗时
当扫描结束后,用结束时间减去开始时间会得到一个timedelta对象,它包含了时间差的详细信息。我们可以用total_seconds()方法获取总耗时的浮点数,再通过以下两种方式取整:
方式一:截断小数部分(直接取整数位)
适合不需要四舍五入,只保留已完成秒数的场景(比如3.9秒算3秒):
end_time = datetime.datetime.now() # 计算总耗时并截断取整 scan_time = int((end_time - start_time).total_seconds()) print(f"扫描耗时:{scan_time} 秒")
方式二:四舍五入取整
适合需要按常规四舍五入规则统计的场景(比如3.5秒算4秒):
end_time = datetime.datetime.now() # 计算总耗时并四舍五入取整 scan_time = round((end_time - start_time).total_seconds()) print(f"扫描耗时:{scan_time} 秒")
完整示例代码
把以上逻辑整合到你的端口扫描程序里,完整代码如下:
import datetime import time # 仅用于模拟扫描耗时,实际替换成你的端口扫描代码 # 记录并格式化开始时间 start_time = datetime.datetime.now() formatted_start = start_time.strftime("%H.%M.%S") print(f"扫描开始时间:{formatted_start}") # 模拟端口扫描过程(替换成你的真实扫描代码) print("正在扫描端口...") time.sleep(4.3) # 模拟耗时4.3秒 # 计算并输出耗时 end_time = datetime.datetime.now() scan_time = int((end_time - start_time).total_seconds()) print(f"扫描结束,耗时:{scan_time} 秒")
内容的提问来源于stack exchange,提问作者BchainBrother
相关产品推荐
相关产品推荐

