z.B. Verwandeln Sie „base\reports 2025-10-25\some_file.ext“ in „base\2025-10-25 some_file.ext“
Code: Select all
...
from pathlib import Path
import re
from argparse import ArgumentParser
from easy_date import get_squished_date
parser = ArgumentParser(description="Prefix files (recursively) with folder date")
parser.add_argument("-apply", action="store_true",
help="apply changes (changes only shown otherwise)")
APPLY_FLAG = parser.parse_args().apply
################################################################################
def main() :
folders = [item for item in Path.cwd().iterdir() if item.is_dir()]
for folder in folders :
squished_date = get_squished_date(folder.name) # 'YYYYMMDD'
# FAIL clause
if not squished_date :
continue
if not APPLY_FLAG :
print(folder.name)
print('-' * len(folder.name))
files = [item for item in Path(folder).rglob('*') if item.is_file()]
for file in files :
new_name = f"{squished_date} - {file.name}"
# NOTE: name includes extensions as opposed to stem
if APPLY_FLAG :
file.rename(file.parent.parent / new_name)
# NOTE: __MOVING__ up one folder, rename() won't overwrite
else :
print(file.relative_to(folder).with_name(new_name))
if not APPLY_FLAG :
print() # empty line after each folder
if not APPLY_FLAG :
print("\n\t" "Changes not applied, use `-apply` to actually apply")
else :
print("\t" "CHANGES APPLIED!")
...
Mobile version