Python Convert listdir()返回字节进行解码

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,但仍然无法工作 谢谢。您使用了作为目录名称,而不是使用编码的字节字

我有一个目录列表,其名称以“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
,但仍然无法工作

谢谢。

您使用了作为目录名称,而不是使用编码的字节字符串作为名称创建目录。要撤消掠夺,在这种特殊情况下,您可以使用评估字符串表示,然后解码生成的
字节
对象:

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'/