浏览代码

[python] ignore exceptions while trying to force stdout/stderr encoding (#8772)

Aleksandr Kuzmenko 6 年之前
父节点
当前提交
44bc7a013d
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      src/generators/genpy.ml

+ 7 - 2
src/generators/genpy.ml

@@ -2505,8 +2505,13 @@ module Generator = struct
 		if has_feature ctx "closure_Array" || has_feature ctx "closure_String" then
 			spr ctx "from functools import partial as _hx_partial\n";
 		spr ctx "import sys\n";
-		spr ctx "if sys.stdout.encoding != 'utf-8':\n    sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)\n";
-		spr ctx "if sys.stderr.encoding != 'utf-8':\n    sys.stderr = open(sys.stderr.fileno(), mode='w', encoding='utf8', buffering=1)\n\n";
+		spr ctx "try:\n";
+		spr ctx "    if sys.stdout.encoding != 'utf-8':\n";
+		spr ctx "        sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)\n";
+		spr ctx "    if sys.stderr.encoding != 'utf-8':\n";
+		spr ctx "        sys.stderr = open(sys.stderr.fileno(), mode='w', encoding='utf8', buffering=1)\n";
+		spr ctx "except:\n";
+		spr ctx "    pass\n";
 		gen_imports ctx;
 		gen_resources ctx;
 		gen_types ctx;