Итак, я недавно начал программировать Python (3). Это было для проекта об "усреднении изображений"; возьмите пиксельные значения изображений, найдите среднее значение и поместите его в изображение. Я начал использовать Python, как я слышал о Python Imaging Library (она хорошо работает для моего использования), и программирование на JavaScript было бы слишком утомительным.
Итак, мой код:
#!/usr/bin/env python3
from PIL import Image
import os
main_dir = "/Users/dragonsruleethanslota/Downloads/image_averaging_python3.6"
image_dir = f"{main_dir}/images"
image_list = []
invisibles = [".DS_Store", ".Trashes"]
def reset_temptxt():
with open(f"{main_dir}/temp.txt", "w") as temptxt:
temptxt.write("")
def check_extensions(countq = False):
count = 0
for filename in os.listdir(image_dir): # Problematic lines of code
if filename in invisibles: # Also problematic
continue # Also problematic
try:
Image.open(f"{image_dir}/{filename}")
except OSError:
count = count + 1
if countq:
return count # Returns amount of bad file extensions
else:
return not count # Returns boolean of whether there are bad file extensions or not
if check_extensions():
for file in os.listdir(image_dir):
if filename in invisibles:
continue
image = Image.open(f"{image_dir}/{file}")
image_list.append([image, image.load()])
reset_temptxt()
def do_averages(xpixel, ypixel):
with open(f"{main_dir}/temp.txt", "a") as temptxt:
for (img, pixel_img) in image_list:
pixel = pixel_img[xpixel, ypixel]
temptxt.write("{},{},{}".format(*pixel))
do_averages(0, 0)
(у меня также есть файл с именем temp.txt
и папка с именем images
)
Что чрезвычайно запутало все это, когда я вернулся на ночь, чтобы запустить его снова: Я пошел и закончил программировать функцию do_averages()
, затем запустил ее в ожидании увидеть что-то в temp.txt
, но ничего не получилось. Это произошло из-за сбоя функции check_extensions()
, поскольку macOS добавляет файл с именем «.DS_Store» в папки. Это вызвало сбой функции; Я добавил список invisibles
и проверил, был ли текущий файл в каком-либо из этих файлов. Если так, тогда пропустите остальную часть кода.
Однако эта новая строка вызывает ошибку! Очевидно, Python не может найти переменную filename
(ту, которая присваивается l oop). И что еще больше сбивает с толку, так это то, что когда я снимаю чек, ошибка не возникает. Пожалуйста помоги; Я новичок в Python и чувствую, что это забывчивая ошибка!