Comment supprimer tous les fichiers dans un répertoire sur le serveur distant SFTP en Python?
Je voudrais supprimer tous les fichiers dans un répertoire sur un serveur distant que je suis déjà connecté à l'aide de Paramiko. Je ne peux pas explicitement donner les noms de fichier, si, parce que ceux-ci varient selon la version de fichier, j'avais déjà mis là.
Voici ce que je suis en train de faire... la ligne en dessous du #TODO est l'appel que je suis en train où remoteArtifactPath
est quelque chose comme /opt/foo/*
ssh = paramiko.SSHClient()
ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
ssh.connect(server, username=username, pkey=mykey)
sftp = ssh.open_sftp()
# TODO: Need to somehow delete all files in remoteArtifactPath remotely
sftp.remove(remoteArtifactPath+"*")
# Close to end
sftp.close()
ssh.close()
Une idée de comment je peux faire?
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution: parcourir tous les fichiers dans l'emplacement distant, puis d'appeler
remove
sur chacun d'eux:os.path.join(remoteArtifactPath, file)
au lieu desftp.remove(remoteArtifactPath+file)
, parce queos.path.join()
est indépendant de la plateforme. Ligne séparateurs peuvent différer selon la plate-forme et l'utilisation d'os.chemin d'accès.rejoignez assure que les chemins sont générés correctement, indépendamment de la plateforme.Un Tissu routine pourrait être aussi simple que cela:
Tissu est idéal pour l'exécution de l'interpréteur de commandes sur des serveurs distants. Tissu utilise Paramiko en dessous, de sorte que vous pouvez utiliser à la fois si vous en avez besoin.
Vous avez besoin d'une routine récursive depuis votre répertoire distant peut avoir des sous-répertoires.
Pour @markolopa réponse, vous avez besoin de 2 importations pour le faire fonctionner:
J'ai trouvé une solution, à l'aide de python3.7 e éperon 0.3.20. Il est très possible que les œuvres avec les autres versions.