Python 根据csv文件移动文件
假设我有两个文件夹-图像A和图像B,每个文件夹中都有一组图像。这些文件夹具有以下结构:Python 根据csv文件移动文件,python,file,csv,Python,File,Csv,假设我有两个文件夹-图像A和图像B,每个文件夹中都有一组图像。这些文件夹具有以下结构: 图像A --1111,jpg --2222.jpg --3333.jpg --4444.jpg --5555.jpg 图像B --6666,jpg --7777.jpg --8888.jpg --99999.jpg 另外,我有一个csv和一个图像名称列表。问题是,我需要将这些图像(从imagesA/B)移动到一个新的空文件夹,我们称之为-新文件夹。问题是我怎么做 csv文件如下所示: blabla/blab
图像A
--1111,jpg
--2222.jpg
--3333.jpg
--4444.jpg
--5555.jpg
图像B
--6666,jpg
--7777.jpg
--8888.jpg
--99999.jpg
另外,我有一个csv和一个图像名称列表。问题是,我需要将这些图像(从imagesA/B)移动到一个新的空文件夹,我们称之为-新文件夹。问题是我怎么做
csv文件如下所示:
blabla/blabla2/blabla3/2222.jpg
blabla/blabla2/blabla3/7777.jpg
(不用说我没有所有的blabla目录,我应该使用split,忘记所有的blabla)。csv和模块可以提供帮助 假设.csv文件是图像文件相对路径的简单列表,其形式如下:
1111.png
2222.png
...
csv.reader
方法允许您读取csv工作表的每一行。然后,使用os.rename([pass],[new])
检查该文件是否位于文件夹A
或B
中,然后将其写入新文件夹。小心fileexisterror
,以防名称冲突。下面是示例代码
import csv
import os
with open('csvmove.csv', newline='') as csvfile:
linereader = csv.reader(csvfile, delimiter=',')
for row in linereader:
name = row[0]
# Deal with the A folder
try:
os.rename('A/' + name, 'New folder/' + name)
print(name + " moved to new folder.")
except FileNotFoundError:
pass # Not found in A
# Deal with the B folder
try:
os.rename('B/' + name, 'New folder/' + name)
print(name + " moved to new folder.")
except FileNotFoundError:
pass # Not found in B
except FileExistsError:
pass # Name clash
如果要自定义.csv文件,请将name=row[0]
行修改为行
是给定.csv行中的值数组。您还可以处理同时出现A/1111.png
和B/1111.png
的情况
请注意,此代码使用相对路径,因此如果您希望<代码> BLabLA/BLABLA2//BABLA3/…<代码>工作,您可能需要从包含Python文件的文件夹中创建文件夹<代码> BLABLA/BLABLA2/BLABLA3/<代码>。< / P>图像名称可以是任何东西,还是仅仅是1111…9999?JPG?考虑CSV模块可以是任何东西,这只是为了简单起见。您可以使用
os.path.split()
将目录与文件名分开。您到底有什么问题?只需在每个csv行上使用os.path.basename()
,例如使用shutil.move()
将这些文件移动到新文件夹。