Je suis confondu avec le fichier en mouvement sous Python.
Sous Windows Commandline, si je dispose d'un annuaire C: \ A et un répertoire C: \ B, je peux faire qui déplace A à B résultat est la structure de répertoire C: \ b \ a Si j'essaie ceci avec OS.Rename ou Shuttil.Move: p> WindowsError: [Error 17] Cannot create a file when that file already exists
6 Réponses :
Vous devrez indiquer le chemin complet qu'il est déplacé vers: en fait, il ressemble à Si la destination est un répertoire ou un symbolique à un répertoire, le
la source
est déplacé dans le répertoire. P>
blockQuote> (et son Source < / a>.) p> p> shutl.move code> fera ce que vous voulez en regardant sa documentation: p>
Malheureusement, cela échouera si les fichiers sont situés sur différents volumes.
@wuub: Qu'est-ce qui vous fait dire ça? Les documents disent qu'il y a un comportement bizarre dans certains systèmes de fichiers UNIX, mais le PO parle de Windows.
HMM, Ceci est simple pour un répertoire unique, mais la déplacement d'une grande structure de répertoire à un autre dossier est vraiment gênante de cette façon. Assez étrange que Python ne supporte pas cela.
Il fait - shuttil.move Vous pouvez utiliser via: importer le foutu; Shuttil.Move (SRC, DST)
@CDLeary: Vous avez raison, je conseille contre os.Rename à cause des problèmes passés que j'avais avec elle tout en codant un système de fichiers de fusible de jouet, Shuttilis quelles que ce soit fonctionne très bien quels sont les systèmes d'exploitation.
Vous pouvez essayer d'utiliser le shutl module. P>
Spécialement fermé.move (srcfile, Desfile)
move c:\a c:\b
Lorsque j'ai besoin de nombreuses opérations du système de fichiers, je préfère utiliser le module "chemin": C'est une bonne et légère emballeuse autour du module intégré 'OS.Path'. P> Code également: P>
http://pypi.python.org/pypi/path.py/2.2 strong>
last_part = os.path.basename(src)
Excellent point - oublié à propos de basename. Je n'aime pas comment il y a plus d'une façon de le faire. ;-)
os.Rename ("C: / A /", "C: / B" /) -> Modifie le nom du dossier A dans le dossier B P>
os.Rename ("C: / A / A", "C: / B / A") -> Mettez le dossier B dans le dossier A P>
Voulez-vous déplacer tout le contenu du répertoire dans un autre répertoire ou déplacer le répertoire lui-même?