我试图在对某个文件进行一些处理后将其移动到另一个目录。
移动文件很容易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 日期更新为当前日期?
感谢@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()
重命名(移动)文件不会更改文件的修改时间。它更改文件夹的修改时间。
如果你想改变文件的修改时间,你必须明确地这样做。 pysftp 没有相应的 API。但你可以使用Paramiko
SFTPClient.utime
。另请参阅 pysftp 与 Paramiko。