guettli guettli - 7 months ago 135
Python Question

Copy file with pathlib in Python

I try to copy a file with


import pathlib
import shutil

shutil.copy(my_file, to_file)

I get this exception:

/home/foo_egs_d/bin/python /home/foo_egs_d/src/
Traceback (most recent call last):
File "/home/foo_egs_d/src/", line 6, in <module>
shutil.copy(my_file, to_file)
File "/usr/lib/python2.7/", line 117, in copy
if os.path.isdir(dst):
File "/home/foo_egs_d/lib/python2.7/", line 41, in isdir
st = os.stat(s)
TypeError: coercing to Unicode: need string or buffer, PosixPath found

Process finished with exit code

... how to copy file with pathlib in Python?


So what about this?

import pathlib
import shutil

my_file = pathlib.Path('/etc/hosts')
to_file = pathlib.Path('/tmp/foo')
shutil.copy(str(my_file), str(to_file))

The problem is pathlib.Path create a PosixPath object if you're using Unix/Linux, WindowsPath if you're using Microsoft Windows.

But shutil.copy() need string as arguments. So just use str() here, when you use str() function on a Path object it will return the original path.