要将时间改为上海时间,可以使用 pytz
库来获取上海时区的时间。以下是优化后的代码:
import os
from datetime import datetime
import pytz
@staticmethod
def add_timestamp_to_filename(file_path, model):
# 获取上海时区
shanghai_tz = pytz.timezone('Asia/Shanghai')
# 获取当前时间并转换为上海时间
current_time = datetime.now(shanghai_tz).strftime("%Y%m%d_%H%M%S")
# 分割文件路径和文件名
directory, filename = os.path.split(file_path)
name, ext = os.path.splitext(filename)
# 替换模型字符串中的冒号为短横线
modified_string = model.replace(":", "-")
# 构建新的文件名
new_filename = f"{name}_{current_time}_{modified_string}{ext}"
# 返回新的文件路径
return os.path.join(directory, new_filename)
代码说明:
- 时区处理:使用
pytz.timezone('Asia/Shanghai')
获取上海时区对象,然后通过datetime.now(shanghai_tz)
获取当前上海时间。 - 时间格式化:使用
strftime("%Y%m%d_%H%M%S")
将时间格式化为YYYYMMDD_HHMMSS
的字符串格式。 - 文件名构建:将原始文件名、时间戳和修改后的模型字符串拼接成新的文件名。
依赖库:
• pytz
:用于处理时区信息。如果尚未安装,可以通过 pip install pytz
进行安装。
示例:
假设当前上海时间为 2023年10月5日 14:30:45
,模型字符串为 model:example
,原始文件路径为 /path/to/file.txt
,则调用该函数后返回的文件路径为:
/path/to/file_20231005_143045_model-example.txt
这样,文件名将包含上海时间的时间戳,并且模型字符串中的冒号已被替换为短横线。