关于获取文件13位时间戳的问题
我最近写一个数据处理文件 用最后修改时间戳作为id,但是os.path.getmtime()只能获取到文件10位的时间戳,我想精确到毫秒级百度了半天也没找到什么结果在这里求助广大鱼油 PS F:\Repos\ccode> pythonPython 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.getmtime("main")
1636510119.444714
>>> t13 = int(os.path.getmtime("main") * 1000)
>>> t13
1636510119444
>>> {:10_254:} hrpzcf 发表于 2021-11-10 13:30
s =int(os.path.getmtime(r'D:\OneDrive\图床\1636449686933-1.jpg')*1000)
我是想说获取一个文件的修改时间,然后这个修改时间要精确到毫秒这样子,如果直接乘1000会补0 盖世嘤雄 发表于 2021-11-10 15:18
我是想说获取一个文件的修改时间,然后这个修改时间要精确到毫秒这样子,如果直接乘1000会补0
getmtime返回的时间戳本来就是精确到小数点后6位呀,怎么会补0呢 {:10_254:} 本帖最后由 hrpzcf 于 2021-11-11 08:48 编辑
我知道你意思了,你认为getmtime返回的10位时间戳加6位小数只支持精确到秒,其实不是的,精确到秒只需前10位整数,后6位小数记录到微秒级。
python内置模块时间格式化也不用13位整数的时间戳,而是用10位整数加6为小数的时间戳,如果你要把通用的毫秒级时间戳给别人,直接把获得的时间戳乘1000保留整数就可以了。
# coding: utf-8
import os
import time
import datetime
st = os.path.getmtime(__file__)# 获取文件时间戳
# 精确到秒时,只要前10位整数,后6位小数无关紧要
print(time.strftime("%H-%M-%S", time.localtime(st)))# 10位整数加6位小数
print(time.strftime("%H-%M-%S", time.localtime(int(st))))# 10位整数,秒数跟上面没区别
# time 不支持毫秒级格式化符,所以用 datetime
# 后 6 位小数支持精确到微秒级,值查到 %f 微秒格式化符,没查到毫秒符
# 所以格式化出的时间倒数 3 位时间不取就是毫秒了
dt = datetime.datetime.fromtimestamp(st)
t1 = datetime.datetime.strftime(dt, "%H-%M-%S-%f")[:-3]# 毫秒
t2 = datetime.datetime.strftime(dt, "%H-%M-%S-%f")# 微秒
print(t1, "\n", t2, sep="")
学习 {:10_256:} {:10_256:} 学习 {:10_279:} {:10_254:} 这个是需要计算一下 {:10_256:} 留个标记 学习一下{:10_257:}{:10_257:} {:10_277:} 学习一下。
页:
[1]