-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
43 lines (34 loc) · 1.43 KB
/
main.py
File metadata and controls
43 lines (34 loc) · 1.43 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
from pathlib import Path
import shutil
from datetime import datetime
import gui
def determine_file(directory: Path, sort_by: str):
for file in directory.iterdir():
if file.is_file():
if sort_by == 'extension':
sort_by_extension(directory, file)
elif sort_by == 'date':
sort_by_date(directory, file)
def sort_by_extension(directory: Path, file: Path):
file_suffix = file.suffix[1:] if file.suffix else 'no extension'
new_folder = create_new_extension_folder(directory, file_suffix)
new_folder.mkdir(parents=True, exist_ok=True)
shutil.move(str(file), str(new_folder))
def create_new_extension_folder(directory: Path, suffix: str) -> Path:
new_folder = directory / f"{suffix}s folder"
return new_folder
def sort_by_date(directory: Path, file: Path):
try:
creation_time = datetime.fromtimestamp(file.stat().st_birthtime)
except AttributeError:
creation_time = datetime.fromtimestamp(file.stat().st_ctime)
month = creation_time.strftime("%B")
year = creation_time.strftime("%Y")
new_folder = create_new_date_folder(directory, month, year)
new_folder.mkdir(parents=True, exist_ok=True)
shutil.move(str(file), str(new_folder))
def create_new_date_folder(directory: Path, month: str, year: str) -> Path:
new_folder = directory / f"{month} {year}"
return new_folder
if __name__ == "__main__":
gui.root.mainloop()