繁体   English   中英

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

[英]Copy a file from one location to another in 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。

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

例如

    import shutil

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

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

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

您可以使用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))

使用os.path.basename获取文件名,然后在目标中使用它。

import os
from shutil import copyfile


for item in fileList:
    copyfile(item[0], "/Users/username/Desktop/testPhotos/{}".format(os.path.basename(item[0])))

您可能需要从源字符串中截取文件名并将其放在目标路径的后面,因此它是完整的文件路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM