-
Notifications
You must be signed in to change notification settings - Fork 0
AnnaVerh04/lab-python
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
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 0
No packages published