Запуск сторонних приложений

Работа с путями (os, os.path), проверка существования каталога перед созданием, запуск сторонней программы с аргументами:

#Есть программа (Image Magick для Windows), которая сжимает фотографии, и есть папка «Source» 
#с самими фотографиями. Каждую фотографию мы хотим уменьшить до 200px в ширину 
#(высота меняется пропорционально). Нужно для каждой фотографии запустить программу и результат 
#работы положить в папку «Result».

#Пример (ImageMagic): convert input.jpg -resize 200 output.jpg

#Задача №3. Дополнительная (не обязательная)
#Реализовать 4 параллельных процесса и разделить фотографии между ними.

import os
import subprocess

def all_list(): # полный список файлов
    source_dir = 'Source'    
    os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)), source_dir))
    files_list = os.listdir(path=".")
    return files_list

def ensure_dir(file_path): # проверяем есть ли уже каталог с именем Result, если нет, то создаем
    if not os.path.exists(file_path):
        os.makedirs(file_path)

def main(files_list): 
    print('Идет обработка...')
    source_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Source')
    result_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Result')
    ensure_dir(result_dir)
    for i in files_list:
        input_path = os.path.join(source_dir, i)
        output_path = os.path.join(result_dir, i)
        command = 'convert ' + input_path + ' -resize 200 ' + output_path
        os.chdir(os.path.dirname(os.path.abspath(__file__)))
        subprocess.run(command) #subprocess.Popen('имя') - асинхронный запуск
    print('Готово')

main(all_list())