在文件夹路径方面,我坚持使用python和unicode /字符编码(Python 2.7)。
我构建了一个由我的脚本创建的单个部分的路径:
>>> parts = {u'first':var_a, u'second':var_b, u'third':var_c}
>>> parts
{u'second': u'\xe4\xfc\xf6\xdf', u'third': u'1120_21_22', u'first': u'0222'}
......接着是:
>>> path = os.path.join('test', parts[u'first'], parts[u'second'], parts[u'third'])
>>> path
u'test\\0222\\\xe4\xfc\xf6\xdf\\1120_21_22'
打印时没有问题:
>>> print path
test\0222\äüöß\1120_21_22
它也有效:
>>> os.path.isdir(path)
True
但我无法打开它:
>>> subprocess.Popen(u'explorer "' + path + u'"')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 20-23: ordinal not in range(128)
只有路径中的特殊字符才会发生这种情况。需要进行哪种编码/解码才能使subprocess
- 调用工作?
答案 0 :(得分:1)
这是Python中的已知错误。您无法为subprocess.Popen:https://bugs.python.org/issue6135
指定编码该问题也有解决方法:
my_env = os.environ
my_env['PYTHONIOENCODING'] = 'utf-8'
subprocess.Popen(u'explorer "' + path + u'"', env=my_env)