Автооткройте Newly Saved Image File from Scanner via Terminal Commands

Я хочу запустить сканирование с терминала и просмотреть изображение автоматически после завершения. Как я могу сделать это, не зная сохраненного имени файла? Я в настоящее время запускаю Ubuntu 16.04 LTS локально на моем ноутбуке, который подключен через USB к моему сканеру.

Я записал следующую терминальную команду; однако, проблема состоит в том, что, если ошибки больше чем одной минуты во время процесса сканирования затем Следят 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, но Глаз Gnome или EOG будет искать 20170128_2315.tiff приведение к ошибке. И в зависимости от настройки разрешения сканера, может потребоваться 1-5 минут для сканирования от начала до конца.

Файлы изображений в настоящее время сохраняются к моему корневому каталогу ~ / папка Pictures.

Любая справка или вход значительно ценились бы.

1
задан 2 February 2017 в 07:19

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])

Использовать

  1. Скопируйте сценарий в пустой файл, сохраните его как open_latest.py
  2. Выполнение это:

    python3 /path/to/open_latest.py
    

    и последний файл будет открыт его приложением по умолчанию.

Примечания

  • Для использования другого каталога измените строку

    dr = os.path.join(os.environ["HOME"], "Afbeeldingen")
    

    в, например.

    dr = "/path/to/dir"
    

    но не используйте пути как $HOME, которые не работают в Python

  • Для использования определенного приложения вместо по умолчанию измените строку:

    subprocess.Popen(["xdg-open", latest])
    

    в, например.

    subprocess.Popen(["eog", latest])
    

Объяснение

Сценарий:

  • определяет каталог Pictures в Вашем $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])
    
1
ответ дан 7 December 2019 в 15:41

Почему бы не сохранить имя файла к переменной прежде, чем отправить его в scanimage:

filename=~/Pictures/$(date +%Y%m%d_%H%M).tiff
scanimage --format=tiff > "$filename" && sleep 5
eog --fullscreen "$filename"

(я разделил его на несколько строк для удобочитаемости, но можно объединить команды с ;, как Вы делали прежде.)

0
ответ дан 7 December 2019 в 15:41

Другие вопросы по тегам:

Похожие вопросы: