1. ホーム
  2. python

[解決済み] Pythonでpathlibを使ったファイルのコピー

2022-12-28 01:18:53

質問

ファイルをコピーしようとすると 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を使ってファイルをコピーする方法は?

どのように解決するのですか?

使用方法 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 を作成することです。 PosixPath オブジェクトを作成します。 WindowsPath を使用します。

古いバージョンの Python を使用している場合。 shutil.copy はその引数として文字列を必要とします。それらのために str 関数を使います。