根据 csv 文件中的条件创建子目录

Making a subdirectories based on condition in csv file

我有一个包含 .jpg 图片的目录。我还有一个 csv 文件,其中包含 .jpg 图像的文件名和一个条件,比如 1 或 0。

我想做的是根据条件创建两个子目录,并将文件相应地移动到子目录中。 N.B 我需要在 Python 中执行此操作。

为了让自己清楚我的目录结构如下:

--目录
File1.jpg
File2.jpg
File3.jpg
File4.jpg\

我的csv是这样的:

Filenames cond
File1.jpg 1
File2.jpg 0
File3.jpg 1
File4.jpg 0

而我想要的是:
-目录
-- 子目录 1
--- File1.jpg
--- File3.jpg
-- 子目录 0
--- File2.jpg
--- File4.jpg

向所有认为我只是在寻找免费编码的人道歉,我在 post 一个有用的工作示例的错误道路上走得太远了。无论如何,这是对我有用的代码。注意我在 运行 代码之前手动创建了两个子目录文件夹。

rootdir = '/directory'
output_path = '/directory/'
csv = 'labels.csv'
no_ds = pd.read_csv(csv)
for name in no_ds['File_Name'][no_ds['Cond']==1]:
  os.rename(rootdir+'/'+name, rootdir+'/Subdir1/'+name)
for name in no_ds['File_Name'][no_ds['Cond']==0]:
  os.rename(rootdir+'/'+name, rootdir+'/Subdir0/'+name)

这是您的替代版本:

import csv
from pathlib import Path

base_dir = Path("directory")
with open("files.csv", "r") as file:
    reader = csv.reader(file)
    next(reader)  # Skip headers
    for filename, sub_dir in reader:
        sub_dir = base_dir / f"Subdir{sub_dir}"
        sub_dir.mkdir(exist_ok=True)
        (base_dir / filename).rename(sub_dir / filename)

我假设 csv 文件被命名为 files.csv 并且看起来像

Filenames,cond
File1.jpg,1
File2.jpg,0
File3.jpg,1
File4.jpg,0