Python批量转换Unix时间戳遇问题:仅处理列表最后一项
问题解决:convert_utime()函数仅输出最后一个时间戳的转换结果
你的代码核心问题是**print语句放在了for循环外面**——每次循环都会更新epochTime和humanTime变量,但循环结束后才执行一次打印,自然只会输出最后一次循环的结果。
下面是符合作业要求的修正代码,已经封装成convert_utime()函数,同时解决了路径转义、异常处理等细节问题:
import datetime def convert_utime(): # 用原始字符串避免Windows路径的转义问题(\U、\b这类字符会被识别为转义符) with open(r'C:\Users\bailey\Downloads\unixtimestamp.txt') as file: # 读取每行并去除末尾换行符 utime_list = [line.rstrip() for line in file] # 截取每行第7个字符之后的内容(按你原代码的逻辑处理前缀) utime_list = [line[7:] for line in utime_list] for timestamp_str in utime_list: try: epoch_time = float(timestamp_str) human_time = datetime.datetime.fromtimestamp(epoch_time) # 把打印放在循环内部,每次处理完一个时间戳就输出 print(f"Epoch time: {epoch_time} Converted time: {human_time}") except ValueError: # 处理无效的时间戳格式,避免程序崩溃 print(f"忽略无效的时间戳: {timestamp_str}") # 调用函数执行转换 convert_utime()
关键调整说明:
- 将
print语句移入for循环内部,确保每个时间戳的转换结果都能被输出 - 封装成作业要求的
convert_utime()函数 - 用原始字符串
r'路径'处理Windows路径,避免转义字符引发的错误 - 添加
try-except块处理无效输入,提升程序健壮性 - 变量名改为Python规范的蛇形命名,可读性更强
内容的提问来源于stack exchange,提问作者Bailey W
相关产品推荐
相关产品推荐

