Спасибо за указатели. Я нашел следующую реализацию на основе ответа и ссылки @ GiacomoCatenazzi:
# -*- coding: utf-8 -*-
import sys
import codecs
with open("testinput.txt", "r") as ifile:
lines = ifile.read()
with open("testout1.txt", "w") as ofile:
for line in lines:
ofile.write(line)
UTF8Reader = codecs.getreader('utf-8')
sys.stdin = UTF8Reader(sys.stdin)
with open("testout2.txt", "w") as ofile:
for line in sys.stdin:
ofile.write(line.encode('utf-8'))
Однако я не уверен, почему необходимо снова кодировать после использования codecs.getreader
?
Пол [ 114]
Я играл много с этим, и это - код та работа.
bar.add_Ready(fun msg -> Console.WriteLine(msg))
Я не знаю, как теоретически исправляют его, всего лишь, это хорошо работает.
Кто-либо может подтвердить, что это корректно?
Просто для уточнения - более короткая версия должна правильно быть:
bar.Ready.Add(fun msg -> System.Console.WriteLine(msg))
Поскольку F# автоматически не преобразовывает функции лямбды в делегатов - но существует Добавить метод, который берет функцию. Это может затем быть записано еще более простой как это:
bar.Ready.Add(System.Console.WriteLine)
Поскольку F# позволяет Вам использовать участников.NET в качестве первоклассных функций.
Попробуйте это -
bar.Ready.AddHandler(new Agent.ReadyHandler (fun sender msg -> System.Console.WriteLine(msg)))