◐ Shell
clean mode source ↗

GH-73991: Add `pathlib.Path.copy()` by barneygale · Pull Request #119058 · python/cpython

Add a `Path.copy()` method that copies a file to a target file or directory
using `shutil.copy2()`.

In the private pathlib ABCs, we add a version that supports copying from
one instance of `PathBase` to another. We don't copy metadata, because
doing so probably requires new APIs that haven't been designed yet.

@barneygale barneygale changed the title GH-73991: Add pathlib.Path.copy() method. GH-73991: Add pathlib.Path.copy()

May 15, 2024

@barneygale

zooba

eryksun

eryksun

eryksun

eryksun

zooba

Co-authored-by: Eryk Sun <eryksun@gmail.com>

mrahtz pushed a commit to mrahtz/cpython that referenced this pull request

Jun 30, 2024
Add a `Path.copy()` method that copies the content of one file to another.

This method is similar to `shutil.copyfile()` but differs in the following ways:

- Uses `fcntl.FICLONE` where available (see pythonGH-81338)
- Uses `os.copy_file_range` where available (see pythonGH-81340)
- Uses `_winapi.CopyFile2` where available, even though this copies more metadata than the other implementations. This makes `WindowsPath.copy()` more similar to `shutil.copy2()`.

The method is presently _less_ specified than the `shutil` functions to allow OS-specific optimizations that might copy more or less metadata.

Incorporates code from pythonGH-81338 and pythonGH-93152.

Co-authored-by: Eryk Sun <eryksun@gmail.com>

noahbkim pushed a commit to hudson-trading/cpython that referenced this pull request

Jul 11, 2024
Add a `Path.copy()` method that copies the content of one file to another.

This method is similar to `shutil.copyfile()` but differs in the following ways:

- Uses `fcntl.FICLONE` where available (see pythonGH-81338)
- Uses `os.copy_file_range` where available (see pythonGH-81340)
- Uses `_winapi.CopyFile2` where available, even though this copies more metadata than the other implementations. This makes `WindowsPath.copy()` more similar to `shutil.copy2()`.

The method is presently _less_ specified than the `shutil` functions to allow OS-specific optimizations that might copy more or less metadata.

Incorporates code from pythonGH-81338 and pythonGH-93152.

Co-authored-by: Eryk Sun <eryksun@gmail.com>

estyxx pushed a commit to estyxx/cpython that referenced this pull request

Jul 17, 2024
Add a `Path.copy()` method that copies the content of one file to another.

This method is similar to `shutil.copyfile()` but differs in the following ways:

- Uses `fcntl.FICLONE` where available (see pythonGH-81338)
- Uses `os.copy_file_range` where available (see pythonGH-81340)
- Uses `_winapi.CopyFile2` where available, even though this copies more metadata than the other implementations. This makes `WindowsPath.copy()` more similar to `shutil.copy2()`.

The method is presently _less_ specified than the `shutil` functions to allow OS-specific optimizations that might copy more or less metadata.

Incorporates code from pythonGH-81338 and pythonGH-93152.

Co-authored-by: Eryk Sun <eryksun@gmail.com>

@opk12 opk12 mentioned this pull request

Oct 4, 2024