Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как проверить соответствие набора файлов схеме именования
У меня есть куча файлов (TV эпизодов, хотя это довольно произвольно), которые я хочу проверить, соответствуют определенной схеме именования/организации..
В настоящее время: у меня есть три массива regex, один для допустимых имен файлов, один для файлов, в которых отсутствует имя эпизода, и один для допустимых путей.
Тогда я петли хоть каждый действительный-именем regex, если они совпадают, то добавить его "valid" дикт, если не, сделать тоже самое с missing-ep-name regexs, если он соответствует этому нужно присоединить к "invalid" дикт с кодом ошибки (2:'отсутствует epsiode имя'), если он не соответствует, он будет добавлен к недействительным с 'malformed name' код ошибки.
Текущий код можно найти здесь
Я хочу добавить правило, которое проверяет наличие файла folder.jpg в каждом каталоге, но добавление этого сделает код значительно более беспорядочным в его текущем состоянии..
Как я могу написать эту систему более расширяемым способом?
Правила, которые он должен проверить, были бы..
- Файл имеет формат
Show Name - [01x23] - Episode Name.aviилиShow Name - [01xSpecial02] - Special Name.aviилиShow Name - [01xExtra01] - Extra Name.avi - Если имя файла имеет формат
Show Name - [01x23].avi, отобразите его в разделе вывода " отсутствующее имя эпизода - Путь должен быть в формате
Show Name/season 2/the_file.avi(где сезон 2 должен быть правильным номером сезона в имени файла) - каждая папка
Show Name/season 1/должна содержать "folder.jpg"
есть идеи? Пока я пытаюсь проверить эпизоды TV, эта концепция / код должен быть применим ко многим вещам..
Единственной мыслью у меня был список диктов в формате:
checker = [
{
'name':'valid files',
'type':'file',
'function':check_valid(), # runs check_valid() on all files
'status':0 # if it returns True, this is the status the file gets
}
Я хочу добавить правило, которое проверяет
наличие файла folder.jpg в
каждый каталог, но добавить это будет
сделайте код существенно более грязным
в его текущем состоянии..
Я хочу добавить правило, которое проверяет наличие файла folder.jpg в каждый каталог, но добавить это будет сделайте код существенно более грязным в его текущем состоянии..
Это не выглядит плохо. На самом деле ваш текущий код делает это очень красиво, и Свен упомянул хороший способ сделать это:
- Получить список всех файлов
- Проверьте наличие "required" файлов
Вы просто должны добавить в свой словарь список необходимых файлов:
checker = {
...
'required': ['file', 'list', 'for_required']
}
Насколько существует лучший / расширяемый способ сделать это? Я не совсем уверен. Я мог только действительно думать о способе, возможно, отбросить регулярные выражения "multiple" и построить идею Свена для использования разделителя. Поэтому моя стратегия будет определять словарь следующим образом (и мне жаль, что я не знаю синтаксиса Python, и я немного ленив, чтобы посмотреть его, но это должно иметь смысл. /regex/-это сокращение для regex):
check_dict = {
'delim' : /\-/,
'parts' : [ 'Show Name', 'Episode Name', 'Episode Number' ],
'patterns' : [/valid name/, /valid episode name/, /valid number/ ],
'required' : ['list', 'of', 'files'],
'ignored' : ['.*', 'hidden.txt'],
'start_dir': '/path/to/dir/to/test/'
}
- Разделите имя файла на основе разделителя.
- Проверьте каждую из частей.
Поскольку это упорядоченный список, вы можете определить, какие части отсутствуют, и если раздел не соответствует какому-либо шаблону, он деформирован. Здесь parts и patterns имеют отношение 1 к 1. Два массива вместо словаря обеспечивает порядок.
Игнорируемые и необходимые файлы могут быть перечислены. Файлы . и .. , вероятно, следует игнорировать автоматически. Пользователю должно быть разрешено ввести "globs", который может быть расширен shell. Я думаю здесь о свойствах svn:ignore , но глобализация естественна для перечисления файлов.
Здесь start_dir будет по умолчанию для текущего каталога, но если вы хотите, чтобы один файл запускал автоматическое тестирование группы каталогов, это было бы полезно.
Реальный свободный конец здесь-это шаблон пути и по тем же линиям, какой путь требуется для "valid files". Я действительно не мог придумать прочную идею, не написав одно большое регулярное выражение и не взяв из него группы... чтобы построить шаблон. Это было очень похоже на написание языка TextMate grammar. Но это начинает отклоняться от простоты использования. Реальная проблема заключалась в том , что шаблон пути не был составлен из parts, что имеет смысл, но добавляет сложности.
Соответствует ли эта стратегия тому, о чем вы думали?
возможно, вам следует принять подход дефолта к: "the filename is correct" и работать оттуда, чтобы опровергнуть это утверждение:
с тем фактом, что вы разрешаете только имена файлов с: 'show name', 'season number x episode number' и 'episode name', вы точно знаете, что эти элементы должны быть разделены "-" (тире), поэтому вам нужно иметь 2 из них для правильного имени файла.
если это подтвердится, вы можете использовать свой код, чтобы проверить, что имя шоу соответствует имени шоу, как показано в родительской папке родителя (без учета регистра, я полагаю), номер сезона соответствует числовому значению папки родителей (с добавлением или без дополнительного 0).
Если, однако, вы не видите правильного количества тире, вы мгновенно знаете, что что-то не так, и останавливаетесь перед rest тестов и т. д.
и отдельно вы можете проверить, существует ли файл folder.jpg и предпринять необходимые действия. или сделайте это сначала и отфильтруйте этот файл из rest файлов в этой папке.