varias - Cómo enumerar todas las carpetas y archivos en el directorio después de conectarse a través de sftp en python
manejo de archivos y carpetas en python (1)
Hola, estoy usando python y tratando de conectarme a sftp y quiero recuperar un archivo xml desde allí y necesito ubicarlo en mi sistema local, a continuación se muestra el código
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
aquí la conexión está completa y ahora quiero ver todas las carpetas y todos los archivos y necesito ingresar a la carpeta requerida para recuperar el archivo xml desde allí.
Finalmente, mi intención es ver todas las carpetas y archivos después de conectarme al servidor sftp. En el código anterior, utilicé ftp.listdir()
través del cual obtuve resultados como a continuación.
[''.bash_logout'', ''.bash_profile'', ''.bashrc'', ''.mozilla'', ''testfile_248.xml'']
Quiero saber si estos son los únicos archivos presentes?
¿Y el comando que utilicé arriba es correcto para ver las carpetas también?
¿Cuál es el comando para ver todas las carpetas y archivos?
Una solución rápida es examinar el resultado de lstat
de cada objeto en ftp.listdir()
.
Aquí es cómo puedes hacer una lista de todos los directorios.
>>> for i in ftp.listdir():
... lstatout=str(ftp.lstat(i)).split()[0]
... if ''d'' in lstatout: print i, ''is a directory''
...
Los archivos son la búsqueda opuesta:
>>> for i in ftp.listdir():
... lstatout=str(ftp.lstat(i)).split()[0]
... if ''d'' not in lstatout: print i, ''is a file''
...