Créer des répertoires manquants dans ftplib storbinary
J'ai été en utilisant pycurl de transfert de fichiers sur le ftp en python. J'ai pu créer le manque répertoires automatiquement sur mon serveur distant à l'aide de:
c.setopt(pycurl.FTP_CREATE_MISSING_DIRS, 1)
pour certaines raisons, je dois passer à ftplib. Mais je ne sais pas comment faire la même chose ici. Est-il une option à ajouter à storbinary fonction pour le faire? ou je dois créer les répertoires manuellement?
OriginalL'auteur AliBZ | 2012-05-17
Vous devez vous connecter pour publier un commentaire.
FTP_CREATE_MISSING_DIRS est une boucle de l'opération (ajouté ici). Je hasarderais une supposition que vous devez le faire manuellement avec ftplib, mais j'aimerais avoir tort, personne?
Je ferais quelque chose comme ce qui suit: (non testé, et a besoin de rattraper
ftplib.all_errors
)Ou vous pourriez faire
directory_exists
comme ceci: (un peu plus difficile à lire?)Non, vous n'avez pas à le faire manuellement. Vous pouvez simplement appeler la
makedirs
méthode dans leftputil
paquet.Remarque: cette solution ne fonctionne qu'avec haut niveau de répertoires et de ne pas travailler avec des sous-répertoires
OriginalL'auteur Alex L
Je sais c'est un vieux post mais j'ai juste besoin de cette et est venu avec une fonction très simple. Je suis nouveau sur Python donc je vous remercie de vos commentaires.
Exemple d'utilisation:
dir
est un python intégré, vous souhaiterez peut-être modifier que le nom de la variable... aussi vous voulez attraper exceptions spécifiques, pas tous d'entre euxMerci xApple pour vos commentaires. J'ai remplacé 'dir' et limité à seulement attraper IOError exceptions.
Je pense que vous avez oublié de remplacer une instance de la
dir
variable.Oups, il fixe. Merci pour l'attraper. Maintenant, c'est parfait, il a juste besoin d'être voté. 🙂
quelques suggestions:
lower_case_with_underscores
est préféré pour la fonction/les noms de variable - voir pep8. Aussi, il est préférable d'utiliseros.path
fonctions permettant de manipuler des chemins d'accès, par exempleos.path.normpath(os.path.join(current_dir, '..'))
OriginalL'auteur lecnt
J'ai essayé d'ajouter ce que un commentaire pour le @Alex L 's réponse, mais c'était trop long. Vous avez besoin de descendre de manière récursive lors du changement de répertoire si vous voulez créer des répertoires sur le chemin. E. g.
OriginalL'auteur Alexander
Ce code va créer tous les répertoires dans le chemin d'accès:
Ce code permet de vérifier tous les répertoires dans le chemin d'accès et créer manquant dirs
avant "FTP/for_Vadim/"
après "FTP/for_Vadim/1/2/3/"
OriginalL'auteur Vadim Zin4uk
Je suis en utilisant quelque chose comme ceci (sans mdc):
OriginalL'auteur P. Morozov