如何通过python将中文字符写入文件

Bom*_*min 5 python

我正在浏览目录,并希望将所有文件名写入文件.这是一段代码

with open("c:/Users/me/filename.txt", "a") as d:
   for dir, subdirs, files in os.walk("c:/temp"):
      for f in files:
         fname = os.path.join(dir, f)
         print fname
         d.write(fname + "\n")
d.close()
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,有些文件以中文字符命名.通过使用print,我可以在控制台中正确地看到文件名,但在目标文件中,它只是一团糟...我试图打开文件open(u"c:/Users/me/filename.txt", "a"),但它没有用.我也试着写fname.decode("utf-16"),还是不行......

pp_*_*pp_ 2

在将其写入文件之前使用str.encode()进行编码:fname

d.write(fname.encode('utf8') + '\n')
Run Code Online (Sandbox Code Playgroud)

  • 不工作。`UnicodeDecodeError:'ascii' 编解码器无法解码位置 8 中的字节 0xd6:序数不在范围 (128) 中`。我认为原因是字符串已经编码了? (2认同)