Wie kann/sollte ich Skripte testen, die Dateien stapelweise umbenennen?Python

Python-Programme
Anonymous
 Wie kann/sollte ich Skripte testen, die Dateien stapelweise umbenennen?

Post by Anonymous »

Ich habe ein Skript, das Ordner in cwd durchläuft. Ziehen Sie das Datum aus dem Namen jedes Ordners, benennen Sie dann die Dateien in jedem Ordner mit diesem Datum um und verschieben Sie sie nach oben (und aus) aus ihrem übergeordneten Ordner.
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!")
...

Ich habe bereits Testfälle für easy_date. Ich frage mich, wie ich Skripte testen kann, die hauptsächlich nur Dateien umbenennen und verschieben, außer manuell, mit Dummy-Ordnern/-Dateien. oder ob der Code so umstrukturiert werden kann, dass er testbar ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post