On Wed, 11 Mar 2009 14:35:01 -0000, venutaurus...@gmail.com <venutaurus...@gmail.com> wrote:

On Mar 11, 7:20 pm, Tim Golden <m...@timgolden.me.uk> wrote:
venutaurus...@gmail.com wrote:
> Hello all,
>             I got a suspicion on the behaviour of os.rename
> (src,dst).If the src is the path of a file and dst is a new filename
> this os.rename() function is infact creating a new file with the dst
> name in the current working directory and leaving the src as it is. Is
> this the expected behavior?

Yes, though part of this is Windows being bloody-minded. It is always the case that if you don't give a rooted pathname (one starting with r"\") to pretty much any built-in function expecting a filename (in pretty much any language, come to that), the pathname will be assumed to be relative to the current working directory. Windows complicates this by having a current drive too, and per-drive working directories to go with them, so "file.txt", "D:file.txt", r"\path\to\file.txt" and r"D:\path\to\file.txt" could well all be different files in different places.

> If i want the actual source file in its
> orignal location to be renamed without doing os.chdir() to that
> directory, is that possible?

Yes.  Give the full pathname, with drive letters and everything.

os.rename on windows calls the Windows MoveFile API:

 http://msdn.microsoft.com/en-us/library/aa365239(VS.85).aspx

Have a look at the details on that page to see what
the limitations / actions are. But remember -- as I've
indicated elsewhere -- to use the ur"\\?\c:\..." form
of the file names.

And let us know if that works :)

That actually was an illustration. As you've told in another chain, it
isn't working even after appending "\\?\"

Tim's point was that you should read the MS documentation. To be fair it doesn't mention doing a copy and (failing to) delete instead of moving the file when doing cross-volume renames, but that's what the OS will have to do.

--
Rhodri James *-* Wildebeeste Herder to the Masses
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to