Python获取含西里尔字母的文件夹路径异常,需转为ASCII转义格式路径
解决Python获取含西里尔字母路径的转义问题
我明白你遇到的麻烦了——带西里尔字母的路径在Python里输出为空,还没法得到想要的UTF-8转义格式路径。咱们一步步来解决:
问题根源
你用的是Python 2的写法(print folder),在Windows环境下,os.getcwd()返回的是字节串形式的路径。如果终端的默认编码不支持西里尔字母(比如终端用GBK,而路径是CP1251或UTF-8编码),就会出现输出为空或乱码的情况。而你需要的是把西里尔字母转成UTF-8字节对应的\xXX转义格式。
解决方案
针对Python 2的代码
import os # 获取Unicode格式的当前工作目录(避免字节串编码冲突) unicode_path = os.getcwdu() # 将Unicode路径编码为UTF-8字节串 utf8_bytes = unicode_path.encode('utf-8') # 转成带\x转义的字符串(去掉repr自动添加的首尾引号) escaped_path = repr(utf8_bytes)[1:-1] print(escaped_path)
运行这段代码后,就能得到你想要的C:\\Users\\PereverzevPV\\Documents\\xd0\\x98\\xd0\\xbd\\xd0\\xb2格式路径。
如果你用Python 3(兼容写法)
Python 3中os.getcwd()直接返回Unicode字符串,处理方式类似,只需要调整下repr结果的截取:
import os folder = os.getcwd() utf8_bytes = folder.encode('utf-8') # 去掉repr返回的b''前缀和末尾引号 escaped_path = repr(utf8_bytes)[2:-1] print(escaped_path)
关键说明
- 用Unicode路径避免编码混乱:
os.getcwdu()(Python 2)或直接os.getcwd()(Python 3)能拿到无编码问题的Unicode路径,这是解决问题的核心。 - 转义格式的生成:
repr()函数会自动把非ASCII字节转换成\xXX的转义形式,我们只需要去掉它自动添加的引号(或Python 3中的b'前缀)就能得到目标格式。
内容的提问来源于stack exchange,提问作者Pavel Pereverzev
相关产品推荐
相关产品推荐

