Python:如何在windows中的env变量中处理unicode

时间:2017-01-20 10:46:01

标签: python python-2.7 python-3.x subprocess

我想在新生成的进程中将我的自定义环境变量传递给我现有应用程序日志文件目录位置的位置,现在问题是用户目录路径可能包含unicode,取决于用户的语言环境(可以是latin- 1)

# This Works fine if all the characters are ascii
self.app_log_dir = u'C:\\USERS_CUSTOM_PATCH\\logs\\'

env['APP_LOG_DIR'] = self.app_log_dir 

    p = Popen(
                    cmd, close_fds=False, env=env, stdout=stdout.fileno(),
                    stderr=stderr.fileno(), stdin=stdin.fileno(),
                    creationflags=(CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS)
                )

p.start()

##############################

# But path like this fails
self.app_log_dir = u'C:\\USERS_CUSTOM_PATCH\\xx_ÔÔ_xx\\logs\\'
...
...
p.start()

以下是我从popen上面的非ascii路径收到的例外情况,

例外:环境只能包含字符串

任何人都可以建议解决我需要在我的应用程序中处理非ascii路径吗?

更新

pp_log_dir变量可以由用户配置,我是单元测试我的代码并发现问题,因为用户可以在config.py文件中提供任何路径

1 个答案:

答案 0 :(得分:0)

如果用户提供unicode路径,请将其编码为相关编码。

env['APP_LOG_DIR'] = self.app_log_dir.encode('latin-1')