#!/usr/bin/python3.9 from sys import argv, stderr from subprocess import run from os import system import readline PROMPT = 'dict> ' def print_databases(file=stderr): proc = run(('dict', '-D'), encoding='utf-8', capture_output=True) print(proc.stdout, file=file, end='') if len(argv) != 2: print('usage: %s ' % argv[0], file=stderr) print_databases() exit(1) db = argv[1] proc = run(('dict', '-d', db, 'dummy'), capture_output=True) if proc.returncode == 39: print('ERROR: invalid database', file=stderr) print_databases() exit(1) try: while True: word = input(PROMPT) if word: proc = run(('dict', '-f', '-d', db, word), encoding='utf-8', capture_output=True) if proc.stdout: lines = proc.stdout.splitlines() lines = lines[2:] print() print('\n'.join(lines)) print() else: print('\nNo definitions found', end='\n\n') except (EOFError, KeyboardInterrupt): print()