Работа с путями (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())