-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCopying_with_a_random_number.py
More file actions
59 lines (46 loc) · 2.03 KB
/
Copying_with_a_random_number.py
File metadata and controls
59 lines (46 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import csv
import os
import shutil
import random
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_and_create_annotation(start_path: str, end_path: str, file_name: str) -> None:
'''Копирует и создаёт файл аннотации
Parameters
----------
start_path(str) : Стартовый путь
end_path:(str): Конечный путь
file_name(str): Файл аннотации'''
random_names: list[int] = []
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:
random_file_name: int = random.randint(0, 10000)
while random_file_name in random_names:
random_file_name: int = random.randint(0, 10000)
random_names.append(random_file_name)
shutil.copyfile(os.path.join(start_path, dir, file),
os.path.join(end_path, "dataset", str(random_file_name) + ".jpg"))
data.append([os.path.abspath(os.path.join(end_path, "dataset",str(random_file_name) + ".jpg")),
os.path.join(end_path, "dataset", str(random_file_name) + ".jpg"), dir])
write_file(os.path.join(end_path, file_name), data)
if __name__ == "__main__":
start_path: str = "dataset"
end_path: str= "my_dataset2"
file_name: str = "annotation.csv"
copy_and_create_annotation(start_path, end_path, file_name)