在 Python 中将文件从一个位置复制到另一个位置

新手上路,请多包涵

我有一个名为 fileList 的列表,其中包含数千个文件名和大小,如下所示:

 ['/home/rob/Pictures/some/folder/picture one something.jpg', '143452']
['/home/rob/Pictures/some/other/folder/pictureBlah.jpg', '473642']
['/home/rob/Pictures/folder/blahblahpicture filename.jpg', '345345']

我想使用 fileList[0] 作为源复制文件,但要复制到另一个完整的目的地。就像是:

 copyFile(fileList[0], destinationFolder)

并将文件复制到该位置。

当我这样尝试时:

 for item in fileList:
    copyfile(item[0], "/Users/username/Desktop/testPhotos")

我收到如下错误:

 with open(dst, 'wb') as fdst:
IsADirectoryError: [Errno 21] Is a directory: '/Users/username/Desktop/testPhotos'

我可以看看什么可以使它正常工作?我在 Mac 和 Linux 上使用 Python 3。

原文由 robster 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 741
2 个回答

您必须提供目标文件的 全名,而不仅仅是文件夹名称。

您可以使用 os.path.basename(path) os.path.join(path, *paths) 目标路径

for item in fileList:
    filename = os.path.basename(item[0])
    copyfile(item[0], os.path.join("/Users/username/Desktop/testPhotos", filename))

原文由 Psytho 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以只使用 shutil.copy() 命令:

例如

    import shutil

    for item in fileList:
        shutil.copy(item[0], "/Users/username/Desktop/testPhotos")

[来自 Python 3.6.1 文档。我试过了,它有效。]

原文由 Z Yoder 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题