CompressImages.py — скрипт для пакетной обработки изображений: сжатия и изменения размераPIL (Pillow), os, sys, argparse — используется для обработки изображения и работы с файловой системой. CompressImages.py — утилита, которую запускаешь в папке с изображениями (или указываешь исходную папку), скрипт изменяет размер изображений до заданных лимитов (максимальная ширина/высота), сжимает качество (JPEG или др.), переименовывает по шаблону, и сохраняет в output-папку. Полезно, когда надо оптимизировать папки с фотографиями, иконками, медиа-контентом. import os
import sys
from PIL import Image
from argparse import ArgumentParser
def process_images(input_dir, output_dir, max_width, max_height, quality=70, rename_template=None):
os.makedirs(output_dir, exist_ok=True)
count = 0
for fname in os.listdir(input_dir):
if fname.lower().endswith(('.jpg', '.jpeg', '.png')):
path = os.path.join(input_dir, fname)
img = Image.open(path)
# изменение размера с сохранением пропорций
img.thumbnail((max_width, max_height))
base_name, ext = os.path.splitext(fname)
if rename_template:
out_name = rename_template.replace("{count}", str(count)) + ext
else:
out_name = fname
out_path = os.path.join(output_dir, out_name)
img.save(out_path, quality=quality)
print(f"Saved: {out_path}")
count += 1
def main():
parser = ArgumentParser()
parser.add_argument("input_dir")
parser.add_argument("output_dir")
parser.add_argument("--max_width", type=int, default=800)
parser.add_argument("--max_height", type=int, default=600)
parser.add_argument("--quality", type=int, default=70)
parser.add_argument("--rename", help="template, e.g. img_{count}")
args = parser.parse_args()
process_images(args.input_dir, args.output_dir, args.max_width, args.max_height, args.quality, args.rename)
if name == "__main__":
main()
🟢 Идёт по всем изображениям в папке с разрешениями .jpg, .jpeg, .png🟢 Изменяет их размер до заданных максимальных ширины/высоты, сохраняя пропорции🟢 Сжимает качество (для JPG например), чтобы уменьшить размер файлов🟢 Опционально переименовывает файлы по шаблону с номером🟢 Сохраняет всё в выходную папку, чтобы не перезаписывать оригиналы
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥2❤1
time, csv, datetime, argparseКаждую заданную минуту спрашивает (CLI), чем вы заняты.
Записывает метку времени и описание задачи в CSV.
В конце дня автоматически выводит краткую таблицу: сколько времени ушло на каждую задачу.
Полезно, чтобы увидеть, куда уходит время, и перестать терять минуты зря.
python time_tracker.py --interval 60 --output time_log.csv
import time
import csv
from datetime import datetime
import argparse
from collections import Counter
def track(interval, output):
with open(output, 'a', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
while True:
now = datetime.now()
task = input(f"[{now.strftime('%H:%M')}] Что вы сейчас делаете? ")
writer.writerow([now.isoformat(), task])
if task.lower() in ('выход', 'exit', 'quit'):
break
time.sleep(interval * 60)
def summarize(output):
tasks = []
with open(output, newline='', encoding='utf-8') as f:
for row in csv.reader(f):
if len(row) >= 2:
tasks.append(row[1])
counts = Counter(tasks)
print("⏳ Итоги дня:")
for task, cnt in counts.items():
print(f"{task[:30]:30} — {cnt} отметок")
if __name__ == '__main__':
parser = argparse.ArgumentParser("Hourly Time Tracker")
parser.add_argument("--interval", type=int, default=60, help="Интервал опроса (в минутах)")
parser.add_argument("--output", default="time_log.csv", help="CSV файл для логов")
parser.add_argument("--summary", action="store_true", help="Показать итог за день и выйти")
args = parser.parse_args()
if args.summary:
summarize(args.output)
else:
track(args.interval, args.output)
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM