在 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。
您必须提供目标文件的全名,而不仅仅是文件夹名称。
您可以使用 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])))
您可以只使用 shutil.copy() 命令:
例如
import shutil
for item in fileList:
shutil.copy(item[0], "/Users/username/Desktop/testPhotos")
[来自 Python 3.6.1 文档。我试过了,效果很好。]
我有一个名为 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。
您必须提供目标文件的全名,而不仅仅是文件夹名称。
您可以使用 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])))
您可以只使用 shutil.copy() 命令:
例如
import shutil
for item in fileList:
shutil.copy(item[0], "/Users/username/Desktop/testPhotos")
[来自 Python 3.6.1 文档。我试过了,效果很好。]