mirror of
https://github.com/python/cpython.git
synced 2025-07-12 13:55:34 +00:00
Closes #1492704: Make shutil.copyfile() raise a distinct SameFileError
Patch by Atsuo Ishimoto.
This commit is contained in:
parent
09c61bef2d
commit
4865376c44
4 changed files with 35 additions and 5 deletions
|
@ -42,6 +42,9 @@ __all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2",
|
|||
class Error(EnvironmentError):
|
||||
pass
|
||||
|
||||
class SameFileError(Error):
|
||||
"""Raised when source and destination are the same file."""
|
||||
|
||||
class SpecialFileError(EnvironmentError):
|
||||
"""Raised when trying to do a kind of operation (e.g. copying) which is
|
||||
not supported on a special file (e.g. a named pipe)"""
|
||||
|
@ -90,7 +93,7 @@ def copyfile(src, dst, *, follow_symlinks=True):
|
|||
|
||||
"""
|
||||
if _samefile(src, dst):
|
||||
raise Error("`%s` and `%s` are the same file" % (src, dst))
|
||||
raise SameFileError("{!r} and {!r} are the same file".format(src, dst))
|
||||
|
||||
for fn in [src, dst]:
|
||||
try:
|
||||
|
@ -215,6 +218,9 @@ def copy(src, dst, *, follow_symlinks=True):
|
|||
If follow_symlinks is false, symlinks won't be followed. This
|
||||
resembles GNU's "cp -P src dst".
|
||||
|
||||
If source and destination are the same file, a SameFileError will be
|
||||
raised.
|
||||
|
||||
"""
|
||||
if os.path.isdir(dst):
|
||||
dst = os.path.join(dst, os.path.basename(src))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue