Самый простой способ манипулировать каталогами в Python? - PullRequest
0 голосов
/ 02 мая 2018

Мне нужна программа, которая поможет очистить заголовок и структуру группы файлов, чтобы они были в подходящем формате для моей программы медиацентра. Я написал программу, которая очищает имя родительской папки так, как я хочу «Имя (год)». У меня были проблемы с очисткой подфайлов. Это основной псевдокод, который у меня есть:

Find all folders in given directory
Open each folder and copy or move files in child folders to main folder
Sort files by size
Rename the largest file the same name as the parent directory

Search for .srt files
if no .srt files delete all but largest file
if one .srt file found rename it same name as parent directory + .eng.srt
if multiple .srt files found search for "english" or "eng"
if one matching file found rename it same name as parent directory + .eng.srt
if multiple english or eng files found pick one without "SDH" and rename as above

Delete all files except renamed largest file and renamed .srt if found

Я использовал os.rename () для переименования родительских каталогов, но управление подфайлами меня смущает. os.walk, кажется, рекомендуется, но он совсем не интуитивен. Как мне управлять каталогами как объектами, если такая вещь существует?

1 Ответ

0 голосов
/ 02 мая 2018

Предположим, что переименование файла равнозначно пометке для его сохранения (ваш псевдокод должен быть немного изменен):

from os import listdir, remove
from os.path import isfile, join

mainpath = "/tmp/"

renamed_files = []

Каждый раз, когда переименовываете файл, добавляйте его в «список ведения»:

renamed_files.append(fname)

В конце концов:

onlyfiles = [f for f in listdir(mainpath) if isfile(join(mainpath, f))]

for fname in onlyfiles:
   if mainpath+fname not in renamed_files:
       remove(mainpath+fname) # os.remove()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...