[Errno 18] Invalid cross-device link using os.rename

S

Scott Whitney

oldName=/backup/backups/data/WWW_httpd.conf_backups/20050204.httpd.conf

newName=/backup_old/data/WWW_httpd.conf_backups/20050204.httpd.conf

os.rename(oldName,newName) gives:

OSError: [Errno 18] Invalid cross-device link

mv from the shell works fine.

This is Python 2.2.3 from RedHat 9.0.

Any suggestions (other than os.system('mv %s %s')?)
 
F

Fredrik Lundh

Scott said:
os.rename(oldName,newName) gives:

OSError: [Errno 18] Invalid cross-device link

mv from the shell works fine.

This is Python 2.2.3 from RedHat 9.0.

Any suggestions (other than os.system('mv %s %s')?)

catch exception and copy if error == errno.EXDEV.

(this is what "mv" does, of course)

or use shutil.move:
Help on function move in module shutil:

move(src, dst)
Recursively move a file or directory to another location.

If the destination is on our current filesystem, then simply use
rename. Otherwise, copy src to the dst and then remove src.
A lot more could be done here... A look at a mv.c shows a lot of
the issues this implementation glosses over.

</F>
 
J

Jeff Epler

mv is a surprisingly complex program, while os.rename is a wrapper
around rename(2) which is probably documented on your system to return
EXDEV under these circumstanes.

os.xxx is generally a fairly thin wrapper around what your OS provides,
and inherits all the "gotchas". For some activities, os.shutil provides
something that is between os.xxx and os.system("xxx") in complexity and
capability.

Jeff

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)

iD8DBQFCEULWJd01MZaTXX0RAuavAKCX1bQui+R5m4q4kIZfxUq3rFoqMgCgpOQq
Z+qkuXf4jsxiPGmJPMm3EOw=
=uBq3
-----END PGP SIGNATURE-----
 
J

JustScott

Thanks, Jeff. I appreciate the input. I just stuck with os.system('mv
%s %s'). Seems to work fine.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top