我可以使用@Martin Prikryl所提供的以下语法,使用Boto 3从AWS S3将文件从S3成功上传到SFTP到SFTP。
with sftp.open('/sftp/path/filename', 'wb') as f:
s3.download_fileobj('mybucket', 'mykey', f)
我需要archive
先将当前文件从S3上载到SFTP,然后再将当前文件从当前文件夹归档到该文件夹中
我正在尝试使用通配符,因为有时在星期一运行时,您将无法找到星期日的文件,而先前的文件是星期五的文件。因此,无论日期如何,我都希望实现以前的任何文件。
例
我的文件夹如下,filename_20200623.csv
需要移至该ARCHIVE
文件夹,然后filename_20200625.csv
将上传新文件。
MKT
ABC
ARCHIVE
filename_20200623.csv
预期
MKT
ABC
ARCHIVE
filename_20200623.csv
filename_20200625.csv
使用Connection.listdir_attr
检索所有文件的清单目录中,过滤器上,那些你有兴趣,然后移动它们一个接一个的使用Connection.rename
:
remote_path = "/remote/path"
archive_path = "/archive/path"
for f in sftp.listdir_attr(remote_path):
if (not stat.S_ISDIR(f.st_mode)) and f.filename.startswith('prefix'):
remote_file_path = remote_path + "/" + f.filename
archive_file_path = archive_path + "/" + f.filename
print("Archiving %s to %s" % (remote_file_path, archive_file_path))
sftp.rename(remote_file_path, archive_file_path)
对于未来的读者,谁使用的paramiko,代码将是相同的,当然除了中sftp
会参考的paramikoSFTPClient
类,而不是pysftp,Connection
类。由于ParamikoSFTPClient.listdir_attr
和SFTPClient.rename
方法的行为与pysftp相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句