我有个小问题要用python解决。我在20k文件夹中存储了50k个图像。我必须移动到新的文件夹结构,我创建和重命名这些图像。以下是具有C:\test\SOURCE和C:\test\DESTINATION文件夹结构的测试环境:
我有Src.csv文件有一列的图像路径如下:
C:\TEST\SOURCE\1\a.png
C:\TEST\SOURCE\2\b.jpg
C:\TEST\SOURCE\3\c.jpg
C:\TEST\SOURCE\4\d.jpg
C:\TEST\SOURCE\5\e.jpg
我有目标.csv有一个列,其中包含每个图像应指向的路径:
C:\TEST\DESTINATION\6\a.png
C:\TEST\DESTINATION\7\b.jpg
C:\TEST\DESTINATION\8\c.jpg
C:\TEST\DESTINATION\9\d.jpg
C:\TEST\DESTINATION\10\e.jpg
以下是我试图做的:
import csv
from shutil import copyfile
def load_paths(filename):
pathdict = {}
with open(filename) as csvfile:
filereader = csv.reader(csvfile, delimiter=' ')
a = 0
for row in filereader:
pathdict[a] = ''.join(row)
a += 1
csvfile.close()
return pathdict
srcpaths = load_paths('srcfile.csv')
dstpaths = load_paths('dstfile.csv')
for a in range(len(srcpaths)):
copyfile(srcpaths[a],dstpaths[a])
我能够使这个复制文件,但我不知道如何重命名他们现在。我假设我需要另一个列表来引用我将使用的名称。例如,我将有一个csv和两列一个路径和原始名称和第二个新名称?这样行吗?除了上面的代码,我该如何重命名这些图像?你知道吗
更新-复制无法正常工作。它正在从1到6、2到7、3到8、4到9、5到10个文件夹中复制图像。因此,不管我如何在目标文件夹中指定它,脚本出于某种原因正在复制图像,因为它读取源的第一行并将其粘贴到目标文件夹的第一行。你知道吗
我需要改变什么?你知道吗
只需将新名称放入目标csv文件:
文件在复制时被重命名。你知道吗
如果不希望清理源文件夹,请使用
move
函数,该函数还允许在移动文件时重命名:更新您的评论:
您的代码将这两个文件加载到单独的列表中,使用索引获取源文件和目标文件路径。文件之间的唯一链接是文件的行号。如果我在问题中显示的文件中添加行号:
一旦读入,它们将使用列表索引(行号)进行“匹配”,因此
source > destination
映射将是:如果要将文件
C:\TEST\SOURCE\1\a.png
移动到文件夹10
,则需要将目标文件的第一行更改为C:\TEST\DESTINATION\10\a.png
。链接不是基于文件名的。你知道吗更进一步,假设您想将所有文件移动到文件夹
10
。您的Dest.csv
文件将包含:相关问题 更多 >
编程相关推荐