在 Python 中使用 pathlib 复制文件
·
回答问题
我尝试使用pathlib复制文件
import pathlib
import shutil
my_file=pathlib.Path('/etc/hosts')
to_file=pathlib.Path('/tmp/foo')
shutil.copy(my_file, to_file)
我得到这个例外:
/home/foo_egs_d/bin/python /home/foo_egs_d/src/test-pathlib-copy.py
Traceback (most recent call last):
File "/home/foo_egs_d/src/test-pathlib-copy.py", line 6, in <module>
shutil.copy(my_file, to_file)
File "/usr/lib/python2.7/shutil.py", line 117, in copy
if os.path.isdir(dst):
File "/home/foo_egs_d/lib/python2.7/genericpath.py", line 41, in isdir
st = os.stat(s)
TypeError: coercing to Unicode: need string or buffer, PosixPath found
Process finished with exit code
...如何在 Python 2.7 中使用 pathlib 复制文件?
Answers
要使用shutil.copy:
import pathlib
import shutil
my_file = pathlib.Path('/etc/hosts')
to_file = pathlib.Path('/tmp/foo')
shutil.copy(str(my_file), str(to_file)) # For Python <= 3.7.
shutil.copy(my_file, to_file) # For Python 3.8+.
问题是pathlib.Path如果您使用的是 Unix/Linux,则创建一个PosixPath对象,如果您使用的是 Microsoft Windows,则创建一个WindowsPath对象。
对于旧版本的 Python,shutil.copy需要一个字符串作为其参数。对于他们,请在此处使用str功能。
更多推荐

所有评论(0)