Ich versuche, eine bestimmte Datei in ein anderes Verzeichnis zu verschieben, nachdem ich einen Vorgang ausgeführt habe.

Das Verschieben der Datei war mit 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()

Das LastModified -Datum bleibt jedoch das gleiche wie in der Originaldatei.
Gibt es eine Möglichkeit, das LastModified -Datum beim Umbenennen auf das aktuelle Datum zu aktualisieren?

1
Sandeep Roy 13 Aug. 2020 im 11:03

2 Antworten

Beste Antwort

Dank der Antwort von @MartinPrikryl konnte ich endlich meinen Zweck erreichen.

pysftp.Connection hat eine Eigenschaft sftp_client, der gemäß Dokumentation den aktiven paramiko.SFTPClient Objekt.
Ich habe diese Eigenschaft verwendet, um paramiko.SFTPClient aufzurufen. 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
Sandeep Roy 18 Aug. 2020 im 10:15

Durch das Umbenennen (Verschieben) einer Datei wird die Änderungszeit der Datei nicht geändert. Es ändert die Änderungszeit des Ordners.

Wenn Sie die Änderungszeit der Datei ändern möchten, müssen Sie dies explizit tun. pysftp hat dafür keine API. Sie können jedoch Paramiko SFTPClient.utime verwenden. Siehe auch pysftp vs. Paramiko.

1
Martin Prikryl 16 Aug. 2020 im 06:39