Python Convert listdir()返回字节进行解码
我有一个目录列表,其名称以“gbk”编码,例如:Python Convert listdir()返回字节进行解码,python,encoding,listdir,Python,Encoding,Listdir,我有一个目录列表,其名称以“gbk”编码,例如: dirs |- b'\xb6\xb0'/ |- b'\xc1\xb1'/ |- b'\xc9\xdd'/ 但是,当我使用os.listdir()时,返回str列表,如下所示: ["b'\\xb6\\xb0'", "b'\\xc1\\xb1'", "b'\\xc9\\xdd'"] 如何将字符串转换为字节并解码以获得原始字符?我尝试了str.encode.decode,但仍然无法工作 谢谢。您使用了作为目录名称,而不是使用编码的字节字
dirs
|- b'\xb6\xb0'/
|- b'\xc1\xb1'/
|- b'\xc9\xdd'/
但是,当我使用os.listdir()时,
返回str列表,如下所示:
["b'\\xb6\\xb0'", "b'\\xc1\\xb1'", "b'\\xc9\\xdd'"]
如何将字符串转换为字节并解码以获得原始字符?我尝试了str.encode.decode
,但仍然无法工作
谢谢。您使用了作为目录名称,而不是使用编码的字节字符串作为名称创建目录。要撤消掠夺,在这种特殊情况下,您可以使用评估字符串表示,然后解码生成的字节
对象:
import os
import ast
dirs = [ast.literal_eval(d).decode('gbk') for d in os.listdir(...)]
请注意,
ast.literal\u eval()
仅用于恢复目录名,您应该正确地重新创建它们;换句话说,它们不应该以这种方式开始创建。您的目录是否实际命名为b'\xb6\xb0'
?就像在控制台中检查目录一样,您会看到相同的列表。它类似于终端中的b'\xc1\xf2'/