|
19 | 19 | from copy import deepcopy |
20 | 20 | import datetime |
21 | 21 | import errno |
| 22 | +import locale |
22 | 23 | import os |
23 | 24 | import re |
24 | 25 | import platform |
|
47 | 48 | from ..utils.provenance import write_provenance |
48 | 49 | from .. import config, logging, LooseVersion |
49 | 50 | from .. import __version__ |
50 | | -from ..external.six import string_types |
| 51 | +from ..external.six import string_types, text_type |
51 | 52 |
|
52 | 53 | nipype_version = LooseVersion(__version__) |
53 | 54 |
|
@@ -1205,8 +1206,8 @@ def run_command(runtime, output=None, timeout=0.01, redirect_x=False): |
1205 | 1206 | if output == 'file': |
1206 | 1207 | errfile = os.path.join(runtime.cwd, 'stderr.nipype') |
1207 | 1208 | outfile = os.path.join(runtime.cwd, 'stdout.nipype') |
1208 | | - stderr = open(errfile, 'wt') # t=='text'===default |
1209 | | - stdout = open(outfile, 'wt') |
| 1209 | + stderr = open(errfile, 'wb') # t=='text'===default |
| 1210 | + stdout = open(outfile, 'wb') |
1210 | 1211 |
|
1211 | 1212 | proc = subprocess.Popen(cmdline, |
1212 | 1213 | stdout=stdout, |
@@ -1256,26 +1257,17 @@ def _process(drain=0): |
1256 | 1257 | result['merged'] = [r[1] for r in temp] |
1257 | 1258 | if output == 'allatonce': |
1258 | 1259 | stdout, stderr = proc.communicate() |
1259 | | - if stdout and isinstance(stdout, bytes): |
1260 | | - try: |
1261 | | - stdout = stdout.decode() |
1262 | | - except UnicodeDecodeError: |
1263 | | - stdout = stdout.decode("ISO-8859-1") |
1264 | | - if stderr and isinstance(stderr, bytes): |
1265 | | - try: |
1266 | | - stderr = stderr.decode() |
1267 | | - except UnicodeDecodeError: |
1268 | | - stderr = stderr.decode("ISO-8859-1") |
1269 | | - |
1270 | | - result['stdout'] = str(stdout).split('\n') |
1271 | | - result['stderr'] = str(stderr).split('\n') |
| 1260 | + stdout = stdout.decode(locale.getdefaultlocale()[1]) |
| 1261 | + stderr = stderr.decode(locale.getdefaultlocale()[1]) |
| 1262 | + result['stdout'] = stdout.split('\n') |
| 1263 | + result['stderr'] = stderr.split('\n') |
1272 | 1264 | result['merged'] = '' |
1273 | 1265 | if output == 'file': |
1274 | 1266 | ret_code = proc.wait() |
1275 | 1267 | stderr.flush() |
1276 | 1268 | stdout.flush() |
1277 | | - result['stdout'] = [line.strip() for line in open(outfile).readlines()] |
1278 | | - result['stderr'] = [line.strip() for line in open(errfile).readlines()] |
| 1269 | + result['stdout'] = [line.decode(locale.getdefaultlocale()[1]).strip() for line in open(outfile, 'rb').readlines()] |
| 1270 | + result['stderr'] = [line.decode(locale.getdefaultlocale()[1]).strip() for line in open(errfile, 'rb').readlines()] |
1279 | 1271 | result['merged'] = '' |
1280 | 1272 | if output == 'none': |
1281 | 1273 | proc.communicate() |
|
0 commit comments