Difference between revisions of "How to use null flush in python"
Jump to navigation
Jump to search
Firespeaker (talk | contribs) (Created page with "Many Apertium executables have "null flush" modes (usually with <tt>-z</tt>), which allows the executable to run once, stay open, accept input, and flush the output only on a...") |
Firespeaker (talk | contribs) |
||
Line 22: | Line 22: | ||
transducer_process.wait() |
transducer_process.wait() |
||
</pre> |
</pre> |
||
[[Category:Documentation]] |
Revision as of 17:41, 15 July 2022
Many Apertium executables have "null flush" modes (usually with -z), which allows the executable to run once, stay open, accept input, and flush the output only on a null character.
Here's a simple example of how to implement a wrapper in python3 around lt-proc
and a transducer.
from subprocess import Popen, PIPE things_to_transduce = ['foo', 'bar', 'hargle', 'bargle'] transducer_process = Popen(["lt-proc", "-t", "-z", "transducer.bin"], stdin=PIPE, stdout=PIPE) def transduce(inputString): transducer_process.stdin.write(bytes('{}\n'.format(inputString), 'utf-8')) transducer_process.stdin.write(b'\0') transducer_process.stdin.flush() return repr(transducer_process.stdout.readline().strip(b'\0').strip(b'\n').decode()) for thing_to_transduce in things_to_transduce: print(transduce(thing_to_transduce)) transducer_process.stdin.close() transducer_process.wait()