Автоматически открывать вновь сохраненный файл изображения со сканера с помощью команд терминала
Я хочу начать сканирование с терминала и автоматически просмотреть изображение после его завершения. Как я могу сделать это, не зная сохраненного имени файла? В настоящее время я использую Ubuntu 16.04 LTS локально на своем ноутбуке, который подключен через USB к моему сканеру.
Я написал следующую терминальную команду; однако проблема заключается в том, что если во время процесса сканирования прошло более одной минуты, Eye of Gnome не может найти файл изображения, и я получаю сообщение об ошибке:
scanimage --format=tiff > ~/Pictures/$(date +%Y%m%d_%H%M).tiff && sleep 5 ; eog --fullscreen ~/Pictures/$(date +%Y%m%d_%H%M).tiff
Например, файл изображения будет сохранен как 20170128_2314.tiff, но Eye of Gnome или EOG будут искать 20170128_2315.tiff что привело к ошибке. И в зависимости от настройки разрешения сканера сканирование может занять от 1 до 5 минут от начала до конца.
Файлы изображений в настоящее время сохраняются в моем домашнем каталоге ~/ папке с изображениями.
Любая помощь или вклад будет принята с благодарностью.
2 ответа
Откройте последний файл в каталоге с его приложением по умолчанию
Сценарий ниже откроет последний файл внутри вашего ~/Pictures каталог. Независимо от того, как назван файл или когда запускается скрипт.
Конечно, вы можете установить любой другой каталог для использования или любое приложение, чтобы открыть файл.
Сценарий
#!/usr/bin/env python3
import subprocess
import os
from operator import itemgetter
dr = os.path.join(os.environ["HOME"], "Pictures")
files = [os.path.join(dr, f) for f in os.listdir(dr)]
latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]
subprocess.Popen(["xdg-open", latest])
Использовать
- Скопируйте скрипт в пустой файл, сохраните его как
open_latest.py Запустить его:
python3 /path/to/open_latest.pyи последний файл будет открыт приложением по умолчанию.
Заметки
Чтобы использовать другой каталог, измените строку
dr = os.path.join(os.environ["HOME"], "Afbeeldingen")в например
dr = "/path/to/dir"но не используйте такие пути, как
$HOME, которые не работают в питонеЧтобы использовать конкретное приложение вместо приложения по умолчанию, измените строку:
subprocess.Popen(["xdg-open", latest])в например
subprocess.Popen(["eog", latest])
объяснение
Сценарий:
определяет каталог изображений внутри вашего
$HOMEкаталог:dr = os.path.join(os.environ["HOME"], "Pictures")перечисляет файлы:
files = [os.path.join(dr, f) for f in os.listdir(dr)]сортирует файлы по дате модификации (
os.path.getmtime(f)), получите последнюю версию:latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]откройте файл с приложением по умолчанию:
subprocess.Popen(["eog", latest])
Почему бы не сохранить имя файла в переменной перед отправкой scanimage:
filename=~/Pictures/$(date +%Y%m%d_%H%M).tiff
scanimage --format=tiff > "$filename" && sleep 5
eog --fullscreen "$filename"
(Я делю его на несколько строк для удобства чтения, но вы можете комбинировать команды с ; как вы делали раньше.)