Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据csv文件移动文件_Python_File_Csv - Fatal编程技术网

Python 根据csv文件移动文件

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和图像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/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()
将这些文件移动到新文件夹。