Я просматриваю каталог и для каждого видеофайла проверяю, не поврежден ли он. Многие из них содержат пробелы или круглые скобки в имени файла, что приводит к сбою команды оболочки ffmpeg в моем скрипте Python. Как получить имена файлов в abs_file_path с escape-символами, предшествующими специальным символам?
Пример имени файла: Имя фильма (1080p). Цель: Фильм\Название\ \(1080p\).
for filename in os.listdir(directory):
if filename.endswith(tuple(VIDEO_EXTENSIONS)):
print(f'PROCESSING: {filename}...')
abs_file_path = os.path.join(directory, filename)
proc = subprocess.Popen(f'./ffmpeg -v error -i {abs_file_path} -f null - 2>&1', shell=True, stdout=subprocess.PIPE)
output = proc.communicate()[0]
row = ''
if not output:
# Healthy
print("\033[92m{0}\033[00m".format("HEALTHY -> {}".format(filename)), end='\n') # red
row = [filename, 0]
else:
# Corrupt
print("\033[31m{0}\033[00m".format("CORRUPTED -> {}".format(filename)), end='\n') # red
row = [filename, 1]
results_file_writer.writerow(row)
results_file.flush()
results_file.flush()
results_file.close()