Как я могу протестировать скрипт Python, который пакетно переименовывает файлы?Python

Программы на Python
Ответить
Anonymous
 Как я могу протестировать скрипт Python, который пакетно переименовывает файлы?

Сообщение Anonymous »

У меня есть скрипт, который перебирает папки в cwd. извлеките дату из имени каждой папки, затем переименуйте файлы в каждой папке с указанной датой и переместите их вверх (и наружу) из родительской папки.
например. превратите "base\reports 2025-10-25\some_file.ext" в "base\2025-10-25 some_file.ext"

Код: Выделить всё

...
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!")
...

У меня уже есть тестовые примеры для easy_date. Мне интересно, как тестировать сценарии, которые в основном просто переименовывают и перемещают файлы, кроме как вручную, с помощью фиктивных папок/файлов. или можно ли реструктурировать код, чтобы его можно было тестировать.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ames-files
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»