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

问题描述 投票:0回答:2

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

使用 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 日期更新为当前日期?

python sftp paramiko pysftp
2个回答
1
投票

感谢@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()

1
投票

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

如果你想改变文件的修改时间,你必须明确地这样做。 pysftp 没有相应的 API。但你可以使用Paramiko

SFTPClient.utime
。另请参阅 pysftp 与 Paramiko

© www.soinside.com 2019 - 2024. All rights reserved.