如何将文件复制到 Python 脚本中的特定文件夹? [复制]

Posted

技术标签:

【中文标题】如何将文件复制到 Python 脚本中的特定文件夹? [复制]【英文标题】:How to copy a file to a specific folder in a Python script? [duplicate] 【发布时间】:2017-12-20 22:45:25 【问题描述】:

我有一个文件的路径存储在一个变量(比如)filePath 中。我想将该特定文件复制到 Python 脚本中的另一个特定文件夹。

我试过了

folderPath = (os.getcwd() + "/folder_name/") #to get the path of the folder
shutil.copyfile(filePath, folderPath)

但我收到了一个错误IOError: [Errno 21] Is a directory

我该如何解决这个问题?

我的问题似乎与How do I copy a file in python? 重复。但实际上,我想将文件复制到 文件夹/目录,而该问题的大多数答案都提到将一个文件复制到另一个 文件

【问题讨论】:

【参考方案1】:

folderpath 必须是文件,而不是目录。错误说明了一切。执行以下操作:

shutil.copyfile(filePath, folderPath+'/file_copy.extension')

【讨论】:

【参考方案2】:

如下修改你的代码:

folderPath = os.path.join('folder_name', os.path.basename(filePath))
shutil.copyfile(filePath, folderPath)

【讨论】:

【参考方案3】:

使用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

【讨论】:

是的,这也有效:)

以上是关于如何将文件复制到 Python 脚本中的特定文件夹? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

每当有人尝试从 Python 中的特定文件夹复制任何文件时如何记录日志

运行Python脚本以在编译目标之后将文件复制到文件夹中

如何使用 package.json 脚本复制具有特定文件扩展名的文件

如何编写Powershell脚本以提取.iso文件并通过创建文件夹将其复制到文件夹中

如何使用 SCP 或 SSH 将文件复制到 Python 中的远程服务器?

如何将 Google Apps 脚本的范围缩小到特定文件