Skip to content
This repository was archived by the owner on Apr 24, 2025. It is now read-only.

Commit 1b6fb25

Browse files
committed
Fix a bug and organize the code a bit
1 parent e731e7a commit 1b6fb25

1 file changed

Lines changed: 17 additions & 13 deletions

File tree

projects/File_Organizer/main.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,18 @@ def main():
88
args = parse_arguments()
99
check_directory(args.directory_path)
1010

11-
# log if verbose is enabled
12-
log_format = "%(message)s" # This will only log the message content, without any prefix
13-
logging.basicConfig(level=logging.INFO if args.verbose else logging.WARNING, format=log_format)
11+
setup_logging(args.verbose)
1412

1513
organize_directory(args.directory_path)
1614
# Catch any exceptions that may occur
17-
except ValueError as e:
15+
except Exception as e:
1816
print(e)
1917

2018
def parse_arguments():
19+
# Parse the arguments from cli, order is irrelevant
2120
parser = argparse.ArgumentParser(description="Organize files in a directory based on their extensions.")
22-
parser.add_argument("directory_path", type=str, help="Path of the directory to be organized")
23-
parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose output")
21+
parser.add_argument("directory_path", type=str, help="Path of the directory to be organized") # Required argument
22+
parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose output") # Optional argument
2423
return parser.parse_args()
2524

2625
def check_directory(directory_path):
@@ -33,15 +32,20 @@ def check_directory(directory_path):
3332
if not os.access(directory_path, os.W_OK):
3433
raise ValueError(f"'{directory_path}' is not writable.")
3534

35+
def setup_logging(verbose):
36+
log_level = logging.INFO if verbose else logging.WARNING
37+
log_format = "%(message)s"
38+
logging.basicConfig(level=log_level, format=log_format)
39+
3640
def organize_directory(directory_path):
3741
categories = {
38-
"Music": (".mp3", ".wav", ".flac", ".m4a", ".aac", ".ogg", ".oga" ".wma", ".mid"),
39-
"Videos": (".mp4", ".avi", ".mkv", ".mpeg", ".wmv", ".vob", ".flv", ".mov", ".3gp", ".webm"),
40-
"Source Files": (".py", ".c", ".cpp", ".java", ".js", ".cs", ".html", ".css", ".php", ".json", ".xml", ".sql", ".db"),
41-
"Executables": (".exe", ".msi", ".sh", ".bat", ".apk", ".jar", ".deb", ".run", ".bin", ".dmg", ".iso"),
42-
"Pictures": (".jpg", ".jpeg", ".png", ".gif", ".bmp", ".svg", ".webp", ".psd", ".ai", ".ico"),
43-
"Documents": (".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt", ".md", ".odt", ".ods", ".odp", ".csv", ".rtf"),
44-
"Compressed": (".zip", ".rar", ".tar", ".gz", ".7z", ".bz2", ".xz", ".z", ".lz"),
42+
"Music": (".mp3", ".wav", ".flac", ".m4a", ".aac", ".ogg", ".oga", ".wma", ".mid",),
43+
"Videos": (".mp4", ".avi", ".mkv", ".mpeg", ".wmv", ".vob", ".flv", ".mov", ".3gp", ".webm",),
44+
"Source Files": (".py", ".c", ".cpp", ".java", ".js", ".cs", ".html", ".css", ".php", ".json", ".xml", ".sql", ".db",),
45+
"Executables": (".exe", ".msi", ".sh", ".bat", ".apk", ".jar", ".deb", ".run", ".bin", ".dmg", ".iso",),
46+
"Pictures": (".jpg", ".jpeg", ".png", ".gif", ".bmp", ".svg", ".webp", ".psd", ".ai", ".ico",),
47+
"Documents": (".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt", ".md", ".odt", ".ods", ".odp", ".csv", ".rtf",),
48+
"Compressed": (".zip", ".rar", ".tar", ".gz", ".7z", ".bz2", ".xz", ".z", ".lz",),
4549
"Torrents": (".torrent",),
4650
}
4751

0 commit comments

Comments
 (0)