显然没有像os.lutime
那样允许更改符号链接本身的mtime
,即使它指向的文件不存在也是如此。为此,在Linux和OSX上,touch
命令具有-h
选项,不取消引用链接。但我发现没有办法在Python中本地跨平台(至少在OSX和Linux上)。那么我的愿望是否有补救措施? ;)
答案 0 :(得分:0)
虽然不容易跨平台,但可以使用ctypes
模块调用本机函数来执行此操作。
这是我在macOS上创建的Python 2代码。我想通过一些调整,它也可以在Linux上运行。
import ctypes
import ctypes.util
class ctype_timeval(ctypes.Structure):
_fields_ = [
('tv_sec', ctypes.c_long),
('tv_usec', ctypes.c_long)
]
ctype_libsystemc = ctypes.cdll.LoadLibrary(ctypes.util.find_library('libsystem.c'))
ctype_libsystemc_lutimes = ctype_libsystemc.lutimes
ctype_libsystemc_lutimes.restype = ctypes.c_int
ctype_libsystemc_lutimes.argtypes = [ctypes.c_char_p, ctype_timeval * 2]
def lutime(filename, time):
times = (ctype_timeval * 2)()
# access:
times[0].tv_sec = time[0]
times[0].tv_usec = 0
# modification:
times[1].tv_sec = time[1]
times[1].tv_usec = 0
return ctype_libsystemc_lutimes(filename, times)
您可以像os.utime
一样使用它:
lutime('file-or-symlink', (1488079452, 1488079452))