仅从python中的远程SFTP服务器下载新文件,忽略文件扩展名
from datetime import datetime
import pysftp
import fnmatch
import os
from stat import S_IMODE, S_ISDIR, S_ISREG
Hostname = "Hostname"
Username = "Username"
Password = "Password"
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
with pysftp.Connection(host=Hostname, username=Username, password=Password,
cnopts=cnopts) as sftp:
print("Connection successfully established ... ")
local_dir = r"D:\testing"
remote_dir = r'C:\Users\admin\Documents\personal'
for entry in sftp.listdir(remote_dir):
root, ext = os.path.splitext(entry)
for entry1 in sftp.listdir(local_dir):
root1, ext1 = os.path.splitext(entry1)
if root == root1:
if ext != ext1:
pass
elif root != root1:
remotepath = os.path.join(remote_dir, entry)
localpath = os.path.join(local_dir, entry)
sftp.get(remotepath, localpath, preserve_mtime=False)
我正在尝试将文件从SFTP服务器导出到本地。为此,我需要通过从服务器和本地文件夹中的文件名和文件扩展进行比较文件。
实例 abc.xlsx
, abc.csv
, adc.txt
从服务器和
本地文件夹已有 abc.xlsx
,那么我的脚本不应复制任何具有相同名称和相同扩展名或其他扩展名的文件。
在这里,我需要比较文件名和扩展名,
- 如果同名,则不要下载
- 同一名称和不同的扩展名,否
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
os.listdir
。os.path.join
用于SFTP路径。这应该做:
尽管这些天,但您不应使用PysFTP,因为它已经死了。直接使用Paramiko。参见 pysftp vs. paramiko 。上面的代码也将与paramiko一起使用 sftpclient.listdir 。
强制性警告:除非您不关心安全性,否则请勿设置
cnopts.hostkeys = none
none 。有关正确的解决方案,请参见使用pysftpp 验证主机键。os.listdir
for the local path.os.path.join
for SFTP paths.This should do:
Though these days, you should not use pysftp, as it is dead. Use Paramiko directly instead. See pysftp vs. Paramiko. The above code will work with Paramiko too with its
SFTPClient.listdir
.Obligatory warning: Do not set
cnopts.hostkeys = None
, unless you do not care about security. For the correct solution see Verify host key with pysftp.