我正在使用Python并尝试连接到SFTP,希望从中检索一个XML文件,并需要将其放在本地系统中。下面是代码:
import paramiko
sftpURL = 'sftp.somewebsite.com'
sftpUser = 'user_name'
sftpPass = 'password'
ssh = paramiko.SSHClient()
# automatically add keys without requiring human intervention
ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy() )
ssh.connect(sftpURL, username=sftpUser, password=sftpPass)
ftp = ssh.open_sftp()
files = ftp.listdir()
print files
这里的连接是完全成功的。现在我想看到所有的文件夹和所有的文件,需要输入到所需的文件夹中从那里检索XML文件。
最后,我的意图是在连接到SFTP服务器后查看所有文件夹和文件。
在上面的代码中,我使用了ftp.listdir()
,通过它,我得到如下输出
['.bash_logout', '.bash_profile', '.bashrc', '.mozilla', 'testfile_248.xml']
我想知道是否只有这些文件?
我上面使用的命令也可以查看文件夹吗?
查看所有文件夹和文件的命令是什么?
^{} 返回所有内容、文件和文件夹。
如果有文件夹,请使用^{} 来区分它们与文件。它返回^{} 的集合。
@Oz123接受的答案是低效的。
SFTPClient.listdir
在内部调用SFTPClient.listdir_attr
,只返回文件名和文件夹名,而丢弃大多数信息。然后,通过为每个文件调用SFTPClient.lstat
来徒劳地重新检索所有数据。另请参见How to fetch sizes of all SFTP files in a directory through Paramiko。
强制性警告:不要使用
AutoAddPolicy
–这样做将失去对MITM attacks的保护。有关正确的解决方案,请参见Paramiko "Unknown Server"。一个快速的解决方案是检查
ftp.listdir()
中每个对象的lstat
输出。下面是如何列出所有目录的。
文件是相反的搜索:
相关问题 更多 >
编程相关推荐