У меня проблема с тем, что некоторые из моих потоковых файлов в 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'