Переименование файловой структуры в python - PullRequest
0 голосов
/ 05 августа 2020

Надеюсь, кто-нибудь поможет мне систематизировать мои мысли о проекте, над которым я работаю. В настоящее время я пытаюсь написать сценарий python, который будет переименовывать имена телешоу в определенном c формате и порядке.

Скажем, у меня есть файловая структура,

Game of thrones
Season 1
   Episode 1ndjakchekzu.mkv
   Episode 2 mcndnsjhf.mkv

Я надеюсь написать скрипт, который заставит файловую структуру выглядеть так

`Game of Thrones
    Season 01
       Episode 01.mkv
       Episode 02.mkv

Любые советы по организации, инструментам для использования или заранее существующим скриптам были бы невероятно полезны, спасибо .

import os, sys `i = 1

# делает путь указанной папкой #path = input (« Введите путь к папке с файлом. »)

# используется для test path = "C: \ Users \ Desktop \ Naruto"

#variable for extension
#extension = input("Enter the file type.")
 extension = ".avi"
#prints out original files in folder
 os.chdir(path)
 for file in os.listdir():
    src=file
    dst="e"+str(i).zfill(2) + extension
    os.rename(src,dst)
    i+=1
    print (os.listdir(path))

Это то, что у меня есть до сих пор, но кажется, что при запуске я где-то теряю эпизоды (начните с 220 и заканчиваются на 209) и что после переименования эпизоды вышли из строя.

1 Ответ

0 голосов
/ 06 августа 2020

Вы на правильном пути. Найти общее решение, вероятно, сложно. В моем примере номер серии извлекается из имени файла и используется снова.

import glob,os,re

path = os.path.expanduser('~/Desktop/Naruto')
suff = '.avi'
length = 0

for src in glob.iglob(os.path.join(path, f'*{suff}')):
    match = re.match(r'^Episode\s+(?P<num>\d+).*$', os.path.basename(src))
    if not match: raise Exception('missmatch found: {src!r}')
    length = max(length, len(match.group('num')))

for src in glob.iglob(os.path.join(path, f'*{suff}')):
    match = re.match(r'^Episode\s+(?P<num>\d+).*$', os.path.basename(src))
    if not match: raise Exception('missmatch found: {src!r}')
    fname = f"ep_{match.group('num').zfill(length)}{suff}"
    dst = os.path.join(os.path.dirname(src), fname)
    os.rename(src, dst)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...