【问题标题】:Making a subdirectories based on condition in csv file根据 csv 文件中的条件创建子目录
【发布时间】:2021-11-30 06:41:04
【问题描述】:

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

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

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

--目录
文件1.jpg
文件2.jpg
文件3.jpg
文件4.jpg\

我的 csv 是这样的:

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

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

【问题讨论】:

标签: python shutil


【解决方案1】:

这是您的版本的替代方案:

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

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2021-12-17
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多