Нейросеть для кода пайтон: как не потерять 80 фото
Нейросеть для кода пайтон может предложить скрипт переименования. Разбираю, какие условия дать ей заранее, как увидеть план изменений и проверить имена до запуска.
М
Марина
Контент-маркетолог LibraChat
8 мин чтения
Короткий ответ: проси сначала скрипт предпросмотра, который ничего не переименовывает, а показывает пары старых и новых имён. Проверяй отсутствующие файлы, повторяющиеся цели и пути вне папки. Только после этого решай, нужен ли рабочий запуск.
У меня было 80 фотографий для каталога. В таблице рядом стояли старое имя файла и новое, понятное редактору. Я почти попросила нейросеть для кода пайтон «переименовать всё по CSV», но увидела две строки с одним новым именем. Одна фотография могла затереть другую на части систем или оставить скрипт посередине работы с ошибкой. Я потратила 11 минут на таблицу, и это оказалось полезнее мгновенного запуска.
Нейросеть для кода пайтон начинается с правил файла
Сама операция короткая: взять старое имя и присвоить новое. Сложность в правилах, которых в слове «переименуй» нет. Что делать, если старого файла нет? Если два разных изображения хотят одно имя? Если в таблице уже есть расширение, а в папке оно другое? Я сначала выписала ответы, потом стала составлять запрос.
Для моего каталога договорённость была такой:
Исходные фотографии лежат только в папке demo_photos; соседние папки скрипт не читает.
В CSV две колонки, old и new; имена включают расширения.
Существующий файл не заменяется. При конфликте скрипт сообщает обе строки и останавливается до любых изменений.
Если исходный файл не найден, это ошибка списка, а не повод искать похожее имя.
Сначала нужен предпросмотр. Режим переименования будет отдельным шагом после проверки.
Пятый пункт самый важный. Я попробовала представить, как объясню коллеге потерю фотографии из-за неверной таблицы. «Скрипт так решил» звучало бы нелепо. Решение о конфликте имён должно появиться до кода. И лучше, если первым результатом станет список действий, который можно прочитать глазами.
Здесь файлы ещё целы. Есть время остановиться.
Слово «пайтон» в запросе часто означает: «я не знаю синтаксис, но хочу получить работающий скрипт». Это нормальная исходная точка. Она не освобождает от понимания входа и выхода. Копировать код из чата прямо на рабочую папку было бы таким же риском, как дать подрядчику таблицу с двумя одинаковыми артикулами и не посмотреть итог.
Что написать в запросе вместо «сделай код»
Я даю нейросети задачу не про весь каталог, а про один проверяемый шаг. В примере нет путей к настоящему магазину, клиентских файлов или ключей доступа:
Нужен Python-скрипт для предварительного просмотра переименования файлов в папке demo_photos по CSV с колонками old,new. Сначала проверь заголовок CSV, пустые поля, отсутствие исходного файла, повтор нового имени и совпадение нового имени с уже существующим файлом. Не выходи из demo_photos: в old и new разрешены только имена файлов, без разделителей пути. При любой ошибке покажи строку CSV и не выполняй переименование. Пока выведи только план «старое → новое»; команды изменения файлов не добавляй. После кода перечисли тестовые случаи.
Длинно? Да. Зато каждое предложение закрывает конкретный риск. Я проверила запрос по своей таблице: два конфликтующих имени он обязан заметить ещё до вывода плана. На короткой версии «сделай код» нельзя понять, как должны вести себя ошибки. Код может выглядеть профессионально и всё равно выполнить неверную задачу.
Я бы отдельно попросила объяснить два места: как читается CSV и как проверяется путь. Для CSV в стандартной библиотеке Python есть DictReader: он берёт значения строк по названиям колонок. Это удобно, когда порядок столбцов меняется. Но названия old и new надо сверить с первой строкой файла; опечатка в заголовке не должна пройти молча.
Для путей есть pathlib.Path. Документация Python описывает Path.exists и Path.is_file для проверки существования, а Path.rename для переименования. У последней операции есть различие по системам: на Windows существующая цель вызывает FileExistsError, на Unix существующий файл может быть заменён. Поэтому правило «сначала проверить конфликт и сделать копию» не придирка. Переименование на разных компьютерах может вести себя по-разному.
Нейросеть для кода пайтон: зачем нужен предпросмотр
Вот минимальная форма вывода, которую я хочу увидеть перед любыми действиями:
~~~text
строка 2: IMG_1001.jpg -> stul-dub.jpg
строка 3: IMG_1002.jpg -> stul-dub-detail.jpg
строка 4: IMG_1003.jpg -> ОШИБКА: новое имя stul-dub.jpg уже занято
~~~
Для человека сразу видно, какая строка мешает. Я исправляю CSV, а не уговариваю программу выбрать одну из двух фотографий. Если отчёт просто пишет «готово 79 файлов, 1 ошибка», мне придётся искать конфликт вручную.
Фрагмент Python для печати плана совсем короткий:
~~~python
from pathlib import Path
folder = Path("demo_photos")
source = folder / "IMG_1001.jpg"
target = folder / "stul-dub.jpg"
print(source.name, "->", target.name)
~~~
Он ничего не переименовывает. Именно это мне здесь нужно. Полный скрипт ещё должен прочитать CSV, запретить имена с разделителями пути, найти все конфликты до изменения файлов и только потом показать план. Я не прячу эти требования за маленьким примером кода. Если помощник дал функцию с вызовом rename уже в первой версии, я прошу убрать запись и вернуть проверяемый предпросмотр.
Я собрала три строки примера до того, как думать о рабочем запуске. С ними можно проверить формат вывода, не затрагивая каталог. Ошибка видна сразу. Третий файл получает то же имя, что и первый, поэтому ожидаемый результат здесь — остановка плана, а не молчаливый выбор одного кадра.
Предпросмотр обнаруживает не только технические ошибки. У двух фото могут быть разные старые имена и одинаковое новое, потому что редактор счёл оба кадра «главным». Программа не знает, какой кадр пойдёт в карточку товара. В этой точке решение остаётся у человека, а хорошо написанный код лишь останавливается и показывает обе строки.
Как проверить таблицу до реального переименования
Я держу шесть проверок на маленьком наборе из нескольких файлов. Это быстрее, чем искать сбой среди всех 80:
Строка CSV или состояние папки · Ожидаемое действие предпросмотра · Что ловим
old и new заполнены, файл есть — Показать пару имён — Обычный путь
Старого файла нет — Сообщить номер строки — Опечатка во входе
Два одинаковых new — Остановить весь план — Конфликт целей
Новый файл уже есть в папке — Остановить весь план — Риск замены
Пустое new — Показать ошибку поля — Недописанная строка
Имя содержит переход в соседнюю папку — Отклонить строку — Выход за пределы папки
Для последнего случая я использую учебное значение, а не настоящий путь. Если в имени есть «../» или разделитель каталогов, это уже не просто имя файла. Я прошу скрипт отклонять такое значение ещё при чтении CSV. Проверять только начало собранного пути недостаточно: разные системы по-разному понимают разделители. Правило «только имя файла» проще объяснить и проверить.
Ни одного переименования до этой проверки.
После маленького набора смотрю на полный список из 80 строк. Считаю, сколько пар показано и сколько ошибок найдено. Затем сверяю несколько имён с изображениями глазами: правильный артикул в названии не доказывает, что это нужный ракурс. Последнюю проверку код не сделает за редактора.
Для рабочего запуска я оставляю ещё один список:
хранить копию исходной папки до изменения;
убрать ошибки из CSV и повторить предпросмотр с нулём конфликтов;
открыть несколько фотографий и сверить новые имена;
запустить скрипт только в назначенной папке;
после запуска сравнить число файлов и открыть выборку изображений.
У этого порядка есть цена: пара лишних минут. Она меньше цены перепутанной карточки товара. Я однажды пропустила проверку ракурса, потому что имя было похоже на правильное. Файл остался цел, но на витрине появилась фотография спинки вместо фасада. С тех пор я проверяю не только код и CSV, но и смысл результата.
Что делать, если код всё равно непонятен
LibraChat по канону помогает с кодом и разбирает файлы с кодом, но итоговый скрипт надо читать и проверять человеку. Я прошу объяснить отдельный участок: «покажи, где программа проверяет повтор new до любых изменений». Если такого места нет, рабочий запуск откладывается. Про другие задачи программиста есть разбор нейросети для программирования.
Возьми один маленький безопасный пример своей задачи и открой чат LibraChat: попроси сначала код предпросмотра и перечень ошибок, которые он обязан остановить. Доступ к функциям зависит от тарифа; проверь варианты здесь. Сегодня достаточно получить план изменений для трёх файлов. Сможешь ли ты по нему заметить ошибку в исходной таблице до запуска?
Pythonкод с нейросетьюпереименование файловCSVпредпросмотрпроверка