Déplacement de fichiers sous python

Je suis confondu avec le fichier se déplaçant sous Python. Sous windows commandline, si j’ai le répertoire c: \ a et un répertoire c: \ b, je peux le faire

move c:\ac:\b 

ce qui déplace un résultat à b est la structure de répertoire c: \ b \ a

Si j’essaie ceci avec os.rename ou shutil.move:

 os.rename("c:/a", "c:/b") 

Je reçois

 WindowsError: [Error 17] Cannot create a file when that file already exists 

Si je déplace un seul fichier sous c: \ a, cela fonctionne.

En python, comment déplacer un répertoire vers un autre répertoire existant?

 os.rename("c:/a", "c:/b/a") 

est équivalent à

 move c:\ac:\b 

sous Windows Commandline

Vous pouvez essayer d’utiliser le module Shutil .

os.rename (“c: / a /”, “c: / b” /) -> Change le nom du dossier a dans le dossier b

os.rename (“c: / a /”, “c: / b / a”) -> Placez le dossier b dans le dossier a

Lorsque j’ai besoin de nombreuses opérations de système de fichiers, je préfère utiliser le module “path”:
http://pypi.python.org/pypi/path.py/2.2

Il s’agit d’un wrapper bon et léger autour du module intégré ‘os.path’.

Code également:

 last_part = os.path.split(src)[1] 

est un peu étrange, car il existe une fonction spéciale pour cela:

 last_part = os.path.basename(src) 

Vous devrez indiquer le chemin complet vers lequel il est déplacé:

 src = 'C:\a' dst_dir = 'C:\b' last_part = os.path.split(src)[1] os.rename(src, os.path.join(dst_dir, last_part)) 

En fait, il semble que shutil.move fera ce que vous voulez en consultant sa documentation:

Si la destination est un répertoire ou un lien symbolique vers un répertoire, la source est déplacée dans le répertoire.

(Et sa source .)

Utiliser FilePath de Twisted:

 from twisted.python.filepath import FilePath FilePath("c:/a").moveTo(FilePath("c:/b/a")) 

ou plus généralement:

 from twisted.python.filepath import FilePath def moveToExistingDir(fileOrDir, existingDir): fileOrDir.moveTo(existingDir.child(fileOrDir.basename())) moveToExistingDir(FilePath("c:/a"), FilePath("c:/b"))