将文件名更改为其时间戳的Python脚本
数字时间戳是一系列字符(通常是数字和分隔符的组合),用于标识特定事件发生的时间。在计算机科学中,时间戳通常用于标记创建虚拟实体的时间,但在其用例中不限于此。数字时间戳以各种标准实现,每个标准都支持特定的用例。即一些标准使用不太精确的时间戳(仅存储事件日期),一些标准在时间戳中编码时区信息。但是时间戳的基本语法在不同标准之间基本相同,这可以防止异化并在选择一种时提供灵活性。
在本文中,我们将学习如何获取文件的创建日期并使用它来创建ISO 8601时间戳。这将用于命名文件。
使用的功能:
- os.path.getctime(): Python中的os.path.getctime()Python用于获取系统指定路径的ctime 。这里ctime指的是UNIX中指定路径的最后一次元数据更改,而在Windows中,它指的是路径创建时间。
- time.strptime():用于将字符串对象转换为时间对象。
- time.strftime(): time.strftime(format[, t])函数将表示由 gmtime()或localtime()函数的时间的 tuprl 或 struct_time 转换为由format 参数指定的字符串。
如果未提供 t,则使用 localtime() 返回的当前时间。格式必须是字符串。 - os.rename(): Python 中的os.rename()Python用于重命名文件或目录。
此方法将源文件/目录重命名为指定的目标文件/目录。
重命名前的文件:
Python3
import time
import os
# Getting the path of the file
f_path = "/location/to/gfg.png"
# Obtaining the creation time (in seconds)
# of the file/folder (datatype=int)
t = os.path.getctime(f_path)
# Converting the time to an epoch string
# (the output timestamp string would
# be recognizable by strptime() without
# format quantifers)
t_str = time.ctime(t)
# Converting the string to a time object
t_obj = time.strptime(t_str)
# Transforming the time object to a timestamp
# of ISO 8601 format
form_t = time.strftime("%Y-%m-%d %H:%M:%S", t_obj)
# Since colon is an invalid character for a
# Windows file name Replacing colon with a
# similar looking symbol found in unicode
# Modified Letter Colon " " (U+A789)
form_t = form_t.replace(":", "꞉")
# Renaming the filename to its timestamp
os.rename(
f_path, os.path.split(f_path)[0] + '/' + form_t + os.path.splitext(f_path)[1])
重命名后的文件:
使用上述代码时需要注意的事项:
- 此代码适用于 Windows 操作系统。对于 windows 以外的操作系统,用户可以省略form_t = form_t.replace(“:”, “꞉”)语句,因为它仅在 windows 中需要,因为操作系统不允许冒号作为文件名。为了在其他操作系统中使用,最后一条语句( os.rename())也应该相应地修改。
- strftime()的参数“%Y-%m-%d %H:%M:%S”是格式说明符。这用于指导strftime() 的输出。可以更改此格式说明符以适应其他时间戳标准的语法。
- 最后一条语句中的os.path.split(f_path)[0]用于获取文件根(父目录)的路径。
- os.path.splitext(f_path)[1]用于将原始文件的文件扩展名(如果有)添加到时间戳