Charles-François Natali <neolo...@free.fr> added the comment: > How about overwrite=[None, True] with None meaning "OS default"?
+1. > One of the Python advantages is providing predictable cross-platform > behavior. If we can't introduce nice API without BC break, it is not > a reason to introduce ulgy API. We cannot make rename() overwrite existing files by default (on Windows). It's out of question, too much code might rely on this, and this may very well introduce security flaws. If you're concerned with the semantics difference between platforms, well, there's not much we can do about it now. Java behaves in the same way, for example. > I'm good with None/True, but that would imply that for posix rename > we'll need to implement the overwrite=False option...which would be a > nice thing (the shell mv command has -i for that). Why? The problem is that it's simply impossible to implement reliably. I didn't check mv source code, but it must be using something like: if '-i' and os.path.exists(target_path): continue os.rename(src_path, target_path). But there's a TOCTTOU race. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8828> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com