ファイルのパスを変数(たとえば)filePathに格納しています。 Pythonスクリプト内の別の特定のフォルダーにその特定のファイルをコピーしたいと思います。
私は試した
folderPath = (os.getcwd() + "/folder_name/") #to get the path of the folder
shutil.copyfile(filePath, folderPath)
しかし、エラーが発生しましたIOError: [Errno 21] Is a directory
。
どうすれば解決できますか?
私の質問は pythonでファイルをコピーするにはどうすればよいですか の複製のように思えるかもしれません。しかし、実際には、ファイルをfolder/directoryにコピーしたいのですが、その質問に対するほとんどの回答は、あるファイルを別のファイルにコピーすることを言及していますファイル。
shutil.copy(filePath, folderPath)
の代わりにshutil.copyfile()
を使用します。これにより、フォルダーを宛先として指定し、許可を含むファイルをコピーできます。
shutil.copy(src, dst, *, follow_symlinks=True)
:ファイルsrcをファイルまたはディレクトリdstにコピーします。 srcとdstは文字列でなければなりません。 dstがディレクトリを指定する場合、ファイルはsrcのベースファイル名を使用してdstにコピーされます。新しく作成されたファイルへのパスを返します。
...
copy()は、ファイルデータとファイルの許可モードをコピーします(os.chmod()を参照)。ファイルの作成時間や変更時間などの他のメタデータは保持されません。オリジナルのすべてのファイルメタデータを保持するには、代わりにcopy2()を使用します。
https://docs.python.org/3/library/shutil.html#shutil.copy
shutil.copyfile()
自体にも記載されているコピーの違いを参照してください。
shutil.copyfile(src, dst, *, follow_symlinks=True)
:srcという名前のファイルの内容(メタデータなし)をコピーdstという名前のファイルにdstを返します。 srcとdstは、文字列として指定されたパス名です。 dstは完全なターゲットファイル名でなければなりません。shutil.copy()で、ターゲットディレクトリパスを受け入れるコピーを探します。 srcとdstが同じファイルを指定している場合、SameFileErrorが発生します。
https://docs.python.org/3/library/shutil.html#shutil.copyfile
folderpath
はディレクトリではなくファイルでなければなりません。エラーはそれをすべて言います。次のようなことをしてください:
shutil.copyfile(filePath, folderPath+'/file_copy.extension')
以下のようにコードを変更します。
folderPath = os.path.join('folder_name', os.path.basename(filePath))
shutil.copyfile(filePath, folderPath)