shutil.move() Error ([Errno 17] File exists:) on win32
Hans Nowak
hans at zephyrfalcon.org
Tue Dec 16 15:41:33 EST 2003
bmgz wrote:
> I am have made a simple script that moves all desktop clutter (ie files that
> are not *.lnk) to a specified folder
> eg. c:\myhome\mydocs\desktopdebris\2003-12-16
>
> ----------------------------------------------------------------------------
> -----------------
> import re, os, time, shutil
> os.chdir(os.environ['HOMEDRIVE']+os.environ['HOMEPATH']+"\\Desktop")
> DESKTOP =
> os.listdir(os.environ['HOMEDRIVE']+os.environ['HOMEPATH']+"\\Desktop")
> TODAYDIR = "E:\\My Documents\\desktop_debris\\"+time.strftime('%Y-%m-%d')
>
>
> if not os.path.exists(TODAYDIR):
> os.mkdir(TODAYDIR)
>
> for i in range(len(DESKTOP)):
> if not re.search("\.lnk$", DESKTOP[i]):
> shutil.move(DESKTOP[i],TODAYDIR)
> ----------------------------------------------------------------------------
> -----------------------
>
> this works fine for FILES on the desktop, but when a FOLDER is present the
> script exits with the following error:
>
> Traceback (most recent call last):
> File "E:\My Documents\python\cleanup_desktop.py", line 12, in ?
> shutil.move(DESKTOP[i],TODAYDIR)
> File "C:\Program Files\Python-2.3\lib\shutil.py", line 167, in move
> copytree(src, dst, symlinks=True)
> File "C:\Program Files\Python-2.3\lib\shutil.py", line 101, in copytree
> os.mkdir(dst)
> OSError: [Errno 17] File exists: 'E:\\My
> Documents\\desktop_debris\\2003-12-16'
I'm not sure, but I think it kinda works like this.
When you move a file, you can do:
shutil.move(filename, directory)
e.g.
shutil.move('test.txt', 'c:/temp')
This moves the file to the c:/temp directory. Nothing surprising here.
However, when moving a directory, this is a bit different. shutil.move(dir1,
dir2) doesn't work if dir2 already exists. Rather, you need to specify the
*new name* of the directory:
shutil.move('c:/dir1', 'c:/temp')
# WRONG if c:/temp already exists
shutil.move('c:/dir1', 'c:/temp/dir1')
# does what you want
HTH,
--
Hans (hans at zephyrfalcon.org)
http://zephyrfalcon.org/
More information about the Python-list
mailing list