Открытие изображения и его закрытие, внешняя программа

#python #python-3.x #windows

#python #python-3.x #Windows

Вопрос:

Я пытаюсь открыть и закрыть изображение. Откройте его в начале цикла и закройте в конце цикла. До сих пор мне удалось открыть только изображение, однако для закрытия я не смог найти правильные варианты. Для открытия я использую

 img =  os.startfile("image.jpg")
  

и для закрытия я пробовал

 img.close()
  

Я также пробовал

 os.close("image.jpg")
  

Как это сделать?

Комментарии:

1. Вы не можете сделать это легко. startfile() просто косвенно запускает связанное приложение.

2. Извините, что беспокою вас, но если вы не возражаете, если я спрошу, каков сложный способ выполнения процесса открытия / закрытия.

3. Возможно, вы сможете сделать это с помощью стороннего модуля, например pynput , для управления приложением или, возможно, путем выполнения некоторых специфичных для ОС вызовов (via ctypes ), чтобы закрыть его.

Ответ №1:

Что-то в этом направлении:

 import subprocess
import os
import signal
import time

image_viewer = "name of the image viewer program"
pid = subprocess.Popen([image_viewer, "image.jpg"]).pid
time.sleep(5)
os.kill(pid, signal.SIGTERM)
  

Вам нужно знать имя приложения, используемого для просмотра изображения.

Если речь идет только о отображении изображения, вы также можете использовать инструментарий GUI, такой как tkinter.

Комментарии:

1. Я не знаю, доступно ли что-то подобное в Python, но вы можете использовать AssocQueryString для определения приложения по умолчанию, связанного с данным расширением файла.