Я хочу запустить сканирование с терминала и просмотреть изображение автоматически после завершения. Как я могу сделать это, не зная сохраненного имени файла? Я в настоящее время запускаю 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.
Любая справка или вход значительно ценились бы.
Сценарий ниже откроет последний файл в Вашем ~/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
, которые не работают в 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])
Почему бы не сохранить имя файла к переменной прежде, чем отправить его в scanimage
:
filename=~/Pictures/$(date +%Y%m%d_%H%M).tiff
scanimage --format=tiff > "$filename" && sleep 5
eog --fullscreen "$filename"
(я разделил его на несколько строк для удобочитаемости, но можно объединить команды с ;
, как Вы делали прежде.)