Skip to content

AnnaVerh04/lab-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

import csv
import os
import shutil
import typing


def write_file(file_name: str, data: list[list[str]]) -> None:
    '''Записывает данные в csv файл
     Parameters
    ----------
    file_name(str) : Файл аннотации 
    data: (list[list[str]]): Данные 
    '''
    file: typing.TextIO = open(file_name, "w")
    writer: csv.writer = csv.writer(file, delimiter=",")
    for row in data:
        writer.writerow(row)
    file.close()


def copy_file(start_path: str, end_path: str) -> None:
    '''Копирует файлы
    Parameters
    ----------
    start_path(str) : Стартовый путь 
    end_path:(str): Конечный путь
    '''
    dirs: list[str] = os.listdir(start_path)
    for dir in dirs:
        path: str = os.path.join(start_path, dir)
        files: list[str] = os.listdir(path)
        if not os.path.isdir(os.path.join(end_path, "dataset")):
            os.mkdir(os.path.join(end_path, "dataset"))
        for file in files:
            shutil.copyfile(os.path.join(start_path, dir, file),
                            os.path.join(end_path, "dataset", dir + "_" + file))


def create_annotation(start_path: str, end_path: str, file_name: str) -> None:
    '''Создание аннотации
    Parameters
    ----------
    start_path(str) : Стартовый путь 
    end_path:(str): Конечный путь
    file_name(str): Файл аннотации
    '''
    data: list[list[str]] = [["full_path", "path", "class"]]

    dirs: list[str] = os.listdir(start_path)
    for dir in dirs:
        path: str = os.path.join(start_path, dir)
        files: list[str] = os.listdir(path)
        if not os.path.isdir(os.path.join(end_path, "dataset")):
            os.mkdir(os.path.join(end_path, "dataset"))

        for file in files:
            data.append([os.path.abspath(os.path.join(end_path, "dataset", dir + "_" + file)),
                         os.path.join(end_path, "dataset", dir + "_" + file), dir])
    write_file(os.path.join(end_path, file_name), data)


if __name__ == "__main__":
    start_path: str = "dataset"
    end_path: str = "my_dataset"
    file_name: str = "annotation.csv"
    copy_file(start_path, end_path)
    create_annotation(start_path, end_path, file_name)

About

No description, website, or topics provided.

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published