You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
import os
|
|
import sys
|
|
import tempfile
|
|
|
|
|
|
def run(prefix=None, suffix=None):
|
|
""" Reads text from stdin, writes it to a temporary file.
|
|
|
|
The path of the temporary file is printed to stdout on success.
|
|
"""
|
|
try:
|
|
with tempfile.NamedTemporaryFile(mode='w+',
|
|
delete=False,
|
|
encoding='utf-8',
|
|
prefix=prefix,
|
|
suffix=suffix) as temp_file:
|
|
for line in sys.stdin:
|
|
temp_file.write(line)
|
|
temp_file.flush()
|
|
temp_file_path = temp_file.name
|
|
|
|
print(temp_file_path)
|
|
|
|
except Exception as e:
|
|
print(f"An error occurred: {e}", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(
|
|
description="Writes stdin to a temporary file and then print the path.",
|
|
)
|
|
parser.add_argument('--prefix',
|
|
help="Optional prefix for the temporary file name.")
|
|
parser.add_argument('--suffix',
|
|
help="Optional suffix for the temporary file name.")
|
|
args = parser.parse_args()
|
|
run(prefix=args.prefix, suffix=args.suffix)
|