转换listdir()返回字节进行解码

时间:2018-06-05 08:38:25

标签: 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,但仍然无法正常工作。

感谢。

1 个答案:

答案 0 :(得分:1)

您已使用string representation of bytes objects作为目录名称,而不是使用编码字节字符串作为名称创建目录。要撤消掠夺,您可以在此特定情况下使用ast.literal_eval()来评估字符串表示,然后解码生成的import os import ast dirs = [ast.literal_eval(d).decode('gbk') for d in os.listdir(...)] 对象:

ast.literal_eval()

请注意,<img src="cid:ii_jhzwfy6l0_163c993284ad67a3" width="295" height="65"> <img src="cid:ii_jhzwfy6l0_163c99368434384384a3" width="295" height="65"> this is text with some images 仅用于恢复目录名称,您应该正确地重新创建它们;换句话说,它们不应该以这种方式创建。