我怎样才能制作目录?

Posted

技术标签:

【中文标题】我怎样才能制作目录?【英文标题】:how can I make directory? 【发布时间】:2021-10-10 20:05:05 【问题描述】:

给定的代码向我显示错误; 我正在根据不同的类及其视频在文件夹下的文件夹下制作文件夹。 train is 文件夹包含不同的类文件夹,每个类文件夹都有特定的视频。 train 的目录是这样的;

---train

  ----class1

         ----video11.mp4
         ----video12.mp4
             ...
  ----class2
         ----video21.mp4
         ----video22.mp4
             ...
      ...

我想像这样创建上述目录的文件夹;

---train_data

  ----class1
         ----video11
         ----video12
             ...
  ----class2
         ----video21
         ----video22
             ...
      ...
    

我已经写了这段代码,但是这显示错误,我不知道为什么 os.mkdir 在这里不起作用

import cv2
import os
from tqdm import tqdm

for data_dir, dest_dir in ["train", 'train_data'],["val", 'val_data']:
    for classes in tqdm(os.listdir(data_dir)):
        for videos in os.listdir(data_dir + '/' + classes):
            print(videos)
            print(classes)
            print(dest_dir)
            if not os.path.exists(dest_dir + '/' + classes + '/' + videos):
                os.mkdir(dest_dir + '/' + classes + '/' + videos)

错误:

v_ApplyEyeMakeup_g01_c01.avi
ApplyEyeMakeup
train_data
  0%|          | 0/101 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "F:/Research/Action Recognition/Mine/data.py", line 12, in <module>
    os.mkdir(dest_dir + '/' + classes + '/' + videos)
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'train_data/ApplyEyeMakeup/v_ApplyEyeMakeup_g01_c01.avi'

我的目录是;

【问题讨论】:

我使用 os.makedirs() 解决了它 我不知道为什么 os.mkdir() 不起作用,我前一天使用的是相同的代码,它正在使用 os.mkdir() 命令。 这能回答你的问题吗? How can I create directories recursively? 【参考方案1】:

您可以使用标准库中的pathlib 模块:

import pathlib
import itertools

extensions = ['mp4', 'avi', 'mkv']

videos = itertools.chain.from_iterable([root_dir.glob(f'**/*.ext')
                                            for ext in extensions])

for video in videos:
    (video.parent / video.stem).mkdir(exist_ok=True)

【讨论】:

以上是关于我怎样才能制作目录?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能制作记分牌卡xcode [关闭]

我怎样才能只为一个元素制作这个?

我怎样才能制作水平的pdf文件

我怎样才能用这样的分组行制作一个表格?

我怎样才能制作一个只采用可序列化对象的方法?

我怎样才能重新制作准备好的声明? [重复]