Неверный UTF-8 с sys.stdin.read () - PullRequest
0 голосов
/ 17 марта 2020

У меня проблема с тем, что некоторые из моих потоковых файлов в NiFi содержат недопустимую кодировку UTF-8. Когда я пытаюсь прочитать свой потоковый файл в сценарий Python, используя ExecuteStreamCommand, он выдает ошибку в sys.stdin.read(), потому что это предполагает кодировку UTF-8. Я не могу понять, как заставить кодировку быть UTF-8, когда я ее читаю - я понял, что могу использовать string.encode('utf-8').strip().decode('utf-8') со строкой, но я не совсем уверен, как применить это к stdin.

Я попытался

#!/usr/bin/python3

import json
import re
import sys
import io

try:
    flow_file = sys.stdin.read()
    sys.stdout.write(str(flow_file))
except UnicodeDecodeError as e:
    flow_file = sys.stdin.encode('utf-8').strip().decode('utf-8')
    sys.stdout.write(str(flow_file))

, но это не удалось

  File "/path/to/scripts/test_encoding.py", line 12, in <module>
    flow_file = sys.stdin.encode('utf-8').strip().decode('utf-8')
AttributeError: '_io.TextIOWrapper' object has no attribute 'encode'
...