pysftp:如何更新上次修改日期

问题描述

在对某个文件进行一些处理之后,我试图将某个文件移动到另一个目录。

使用Connection.rename

轻松移动文件
import pysftp
conn = pysftp.Connection(host = 'host',username = 'user',password = 'password')
remote_src = '/dir1/file1.csv'
remote_dest = '/dir2/archive_file1.csv'
conn.rename(remote_src,remote_dest)
conn.close()

但是 LastModified 日期与原始文件相同。
重命名时是否可以将 LastModified 日期更新为当前日期?

解决方法

重命名(移动)文件不会更改文件的修改时间。更改文件夹的修改时间。

如果要更改文件的修改时间,则必须明确地进行操作。 pysftp没有为此的API。但是您可以使用Paramiko SFTPClient.utime。另请参见pysftp vs. Paramiko

,

由于@MartinPrikryl的回答,我终于能够实现我的目标。

pysftp.Connection具有属性sftp_client,根据文档,该属性返回活动的paramiko.SFTPClient对象。
我使用此属性来调用paramiko.SFTPClient.utime

import pysftp
conn = pysftp.Connection(host = 'host',username = 'user',password = 'password')
remote_src = '/dir1/file1.csv'
remote_dest = '/dir2/archive_file1.csv'
conn.rename(remote_src,remote_dest)
# below is the line I added after renaming the file
conn.sftp_client.utime(remote_dest,None)
conn.close()