Dr. Richard Zinck commited on
Commit
013c2d8
1 Parent(s): 85fbbf1
Files changed (1) hide show
  1. utils.py +77 -0
utils.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Module containing common function.
2
+ """
3
+ import os
4
+ import traceback
5
+ from pathlib import Path
6
+
7
+ import config as cfg
8
+
9
+
10
+ def collect_audio_files(path: str):
11
+ """Collects all audio files in the given directory.
12
+
13
+ Args:
14
+ path: The directory to be searched.
15
+
16
+ Returns:
17
+ A sorted list of all audio files in the directory.
18
+ """
19
+ # Get all files in directory with os.walk
20
+ files = []
21
+
22
+ for root, _, flist in os.walk(path):
23
+ for f in flist:
24
+ if not f.startswith(".") and f.rsplit(".", 1)[-1].lower() in cfg.ALLOWED_FILETYPES:
25
+ files.append(os.path.join(root, f))
26
+
27
+ return sorted(files)
28
+
29
+
30
+ def readLines(path: str):
31
+ """Reads the lines into a list.
32
+
33
+ Opens the file and reads its contents into a list.
34
+ It is expected to have one line for each species or label.
35
+
36
+ Args:
37
+ path: Absolute path to the species file.
38
+
39
+ Returns:
40
+ A list of all species inside the file.
41
+ """
42
+ return Path(path).read_text(encoding="utf-8").splitlines() if path else []
43
+
44
+
45
+ def list_subdirectories(path: str):
46
+ """Lists all directories inside a path.
47
+
48
+ Retrieves all the subdirectories in a given path without recursion.
49
+
50
+ Args:
51
+ path: Directory to be searched.
52
+
53
+ Returns:
54
+ A filter sequence containing the absolute paths to all directories.
55
+ """
56
+ return filter(lambda el: os.path.isdir(os.path.join(path, el)), os.listdir(path))
57
+
58
+
59
+ def clearErrorLog():
60
+ """Clears the error log file.
61
+
62
+ For debugging purposes.
63
+ """
64
+ if os.path.isfile(cfg.ERROR_LOG_FILE):
65
+ os.remove(cfg.ERROR_LOG_FILE)
66
+
67
+
68
+ def writeErrorLog(ex: Exception):
69
+ """Writes an exception to the error log.
70
+
71
+ Formats the stacktrace and writes it in the error log file configured in the config.
72
+
73
+ Args:
74
+ ex: An exception that occurred.
75
+ """
76
+ with open(cfg.ERROR_LOG_FILE, "a") as elog:
77
+ elog.write("".join(traceback.TracebackException.from_exception(ex).format()) + "\n")