ТранскрибаторТранскрибатор
Практическая инструкция

Список файлов расшифровки через Python pathlib: как проверить комплект проекта

CSV-опись папки с относительными путями, размерами и временем изменения в UTC. Как обнаружить пропущенный файл и не спутать размер с подтверждением версии.

Транскрибатор
ЗАПИСЬПЛАН РАБОТЫВыберите папку проектаСохраните опись CSVСверьте ожидаемый комплектПроверить результатОТ СЛОВ К РЕЗУЛЬТАТУ
Работа с реальной записьюНаглядный учебный примерШаблон для копирования
1Выберите папку проекта2Сохраните опись CSV3Сверьте ожидаемыйкомплект
Опись фиксирует фактическую папку; полнота определяется сравнением с ожидаемым комплектом.

Сначала запишите, что должно быть в комплекте

Опись нужна, когда в проекте накопились несколько интервью, таблицы реплик, субтитры и проверенные редакции. Просмотр папки по памяти легко пропускает один материал. CSV-список даёт компактную точку сверки и позволяет сохранить состояние набора на дату проверки.

Перед запуском запишите ожидаемый состав отдельно: например, три интервью, три текста и общая таблица цитат. Автоматический список показывает то, что уже есть на диске. Он не способен догадаться, что отсутствующее интервью тоже должно было войти в передачу.

Подготовьте отдельную project-texts без посторонних материалов. Для основы текста используйте расшифровку аудио. Понятные имена и версии важны ещё до формирования списка.

Выберите поля описи и единицы

Путь сохраняется относительно project-texts. Поэтому I12/transcript.txt и I13/transcript.txt различимы, хотя имя файла одинаковое. Полный путь компьютера здесь не требуется и не попадает в колонку path.

bytes — фактический размер файла в байтах, а не число слов или длительность записи. modified_utc — время изменения по данным файловой системы, переведённое в UTC. Это не дата интервью и не доказательство момента редакторского согласования.

В примере включаются все обычные файлы и вложенные папки; символические ссылки-файлы исключены. Используйте обычную подготовленную структуру без ссылочных каталогов. Если нужен только конкретный тип экспорта, задайте отбор расширений отдельно и запишите правило.

Сохраните список без изменения исходных файлов

Сохраните код как list_project.py рядом с project-texts. Выполните python list_project.py или python3 list_project.py. Появится manifest-v01.csv, который можно открыть текстовым редактором или импортировать в таблицу.

from pathlib import Path
from datetime import datetime, timezone
import csv

root = Path("project-texts")
rows = []
for path in sorted(root.rglob("*")):
    if path.is_file() and not path.is_symlink():
        info = path.stat()
        rows.append({
            "path": path.relative_to(root).as_posix(),
            "bytes": info.st_size,
            "modified_utc": datetime.fromtimestamp(
                info.st_mtime, timezone.utc).isoformat()
        })
if not rows:
    raise ValueError("Файлов нет: проверьте папку")
with Path("manifest-v01.csv").open(
    "x", encoding="utf-8-sig", newline=""
) as saved:
    writer = csv.DictWriter(saved,
        fieldnames=["path", "bytes", "modified_utc"])
    writer.writeheader()
    writer.writerows(rows)
print("Файлов в списке:", len(rows))

CSV открывается в режиме "x", поэтому существующая опись не перезаписывается. Для следующей проверки задайте новое имя версии. utf-8-sig добавляет метку UTF-8 у CSV, а newline="" передаёт обработку строк CSV-модулю.

На время обхода завершите редактирование папки. Список не является мгновенным снимком файловой системы: если документы меняются во время работы, строки могут относиться к разным моментам.

Разберите отсутствующие и подозрительные материалы

Сравните каждую ожидаемую позицию со списком path. Проверьте лишние старые редакции, пустые файлы с bytes = 0 и одинаковые имена в неожиданной папке. Затем откройте контрольные документы: наличие строки в описи не гарантирует читаемую расшифровку.

Не называйте два файла одинаковыми только по размеру. Одно заменённое слово способно оставить то же количество байтов. Для содержания TXT используйте сравнение двух версий, а при проверке структуры таблицы — отдельный CSV-разбор.

Когда комплект подтверждён, его можно упаковать и проверить как ZIP. Опись сохраните рядом как описание состава. Не заменяйте ею сами тексты или исходные аудиозаписи.

Учебный пример

Учебный пример: три строки описи

Вымышленный комплект помогает заметить пустую копию и сохранить различие между одинаковыми именами.

pathbytesДействие
I12/transcript.txt18420Открыть контрольную реплику
I13/transcript.txt0Выяснить причину пустого файла
quotes.csv3200Проверить структуру таблицы
ОжиданиеПеречень материаловСоставить до обходаНаличиеПуть и размерСверить описьСодержаниеПравильная версияОткрыть и проверить
Наличие файла, его объём и корректное содержание не равнозначны.

Если файл пропущен, сначала выясните, в какой папке находится согласованная версия. Не копируйте случайную старую редакцию только ради заполнения списка.

Проверка комплекта по описи

Рабочая заготовкаВыделите и скопируйте
Проект: [название]
Папка обхода: [путь]
Опись: [имя CSV]
Время проверки: [дата и пояс]
Ожидаемые материалы: [список]
Пропуски: [позиции]
Пустые файлы: [пути]
Лишние редакции: [пути]
Проверено содержание: [контрольные файлы]
Итоговый комплект: [версия]

Частые вопросы

Размер в байтах показывает число слов?

Нет. Это объём файла. Число слов требует отдельного правила подсчёта текста.

modified_utc — дата записи интервью?

Нет. Это время изменения файла по данным файловой системы, представленное в UTC.

Список автоматически найдёт недостающий текст?

Он покажет фактические файлы. Пропуск определяется сравнением с заранее заданным комплектом.

Опись подтверждает одинаковое содержание копий?

Нет. Для этого нужна отдельная проверка содержимого, а не только размера и времени.