Python文件修改时间获取和设置套接字

时间:2012-11-15 00:54:47

标签: python file time python-3.x

我已经编写了一些代码,我可以使用

获取文件的修改时间
os.path.getmtime('path')

返回一些像965465464.19234这样的数字。我将其转换为字节并通过套接字发送。在另一端,我读取套接字并尝试使用以下命令将此时间戳设置为另一个文件:

os.utime('path',(access_time, modified_time))

当我尝试设置从套接字收到的access_time时,我确保modified_time保持不变。但utime需要一个整数,所以我截断了数字(例如:965465464),然后就可以正常工作了。

我是否因为截断而丢失任何东西?如何做得更好?

2 个答案:

答案 0 :(得分:3)

我不认为问题与modified_time是浮点数还是整数有关。下面的代码应该有效。我做了一切,但通过电线发送。

import os
from datetime import datetime
from calendar import timegm
import sys
st_info = os.stat('foo.py')
st_info.st_atime #acces time
st_info.st_mtime #modified time
mtime = st_info.st_mtime
atime = st_info.st_atime
# send over the wire
os.utime('foo.py', (atime, mtime))

正如你所看到的,os.utime可以用漂浮物做得很好。

修改时间

Out [15]:1322517342.0

在[16]中:输入(mtime)

Out [16]:float

答案 1 :(得分:2)

getmtime()返回st_mtime。来自the docs

  

注意: st_atime,st_mtime和的确切含义和解析   st_ctime属性取决于操作系统和文件   系统。例如,在使用FAT或FAT32文件的Windows系统上   系统,st_mtime有2秒的分辨率,而st_atime只有1天   解析度。有关详细信息,请参阅操作系统文档   同样,虽然st_atime_ns,st_mtime_ns和st_ctime_ns是   总是用纳秒表示,很多系统都没有提供   纳秒精度。在提供纳秒精度的系统上,   用于存储st_atime,st_mtime和的浮点对象   st_ctime无法保留所有内容,因此会略有不同   不精确。 如果您需要确切的时间戳,则应始终使用   st_atime_ns,st_mtime_ns和st_ctime_ns。

强调我的

您可以使用ns参数将整数纳秒从os.stat()传递到os.utime()

os.utime(path, ns=(access_time_ns, modified_time_ns))