鱼C论坛

 找回密码
 立即注册
查看: 2494|回复: 4

python 3.6.2上提示编码问题,麻烦大神看看

[复制链接]
发表于 2017-10-25 23:10:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# -*- coding= utf-8 -*-
import os
import string
targetfile = []

def searchfile(dir):
    for parent,dirs,files in os.walk(dir):
        for file in files:
            f = os.path.splitext(file)
            if f[1] == '.mp4' or f[1] == '.rmvb' or f[1] == '.avi':
                tf = parent + os.sep + file
                targetfile.append(tf)

def createfile():
    savefile = open('C:\\vedioList.txt','w')
    for i in targetfile:
        savefile.writelines(i)
    savefile.close()

dir = input('请输入待查找目录:')

searchfile(dir)
createfile()
              


执行结果
请输入待查找目录:F:\\anime
Traceback (most recent call last):
  File "C:\Python3.6\10.24_1.py", line 23, in <module>
    createfile()
  File "C:\Python3.6\10.24_1.py", line 17, in createfile
    savefile.writelines(i)
UnicodeEncodeError: 'gbk' codec can't encode character '\u30fb' in position 0: illegal multibyte sequence
>>>

这个编码问题怎么解决

这个编码问题怎么解决
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-25 23:29:41 | 显示全部楼层
应该是你要查找的目录,有文件的文件名带“&#12539;”,Windows 默认的 GBK 编码没法搞定这符号。
'\u30fb' = '&#12539;'

把你的代码里的
  1. savefile = open('C:\\vedioList.txt','w')
复制代码

加上个 encoding = 'utf8',指定编码,应该就没问题了。
  1. savefile = open('C:\\vedioList.txt','w', encoding='utf8')
复制代码


顺便,vedio 拼错了,该是 video 噢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-10-26 19:38:03 | 显示全部楼层
  1. # -*- coding= utf-8 -*-
  2. import os
  3. import string
  4. targetfile = []

  5. def searchfile(dir):
  6.     for parent,dirs,files in os.walk(dir):
  7.         for file in files:
  8.             f = os.path.splitext(file)
  9.             if f[1] == '.mp4' or f[1] == '.rmvb' or f[1] == '.avi':
  10.                 tf = parent + os.sep + file
  11.                 targetfile.append(tf)

  12. def createfile():
  13.     savefile = open('C:\\vedioList.txt','w', encoding = 'utf-8')
  14.     for i in targetfile:
  15.         savefile.writelines(i)
  16.     savefile.close()

  17. dir = input('请输入待查找目录:')

  18. searchfile(dir)
  19. createfile()
复制代码

楼上那个恐怕不行吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-26 20:59:32 | 显示全部楼层
新手·ing 发表于 2017-10-26 19:38
楼上那个恐怕不行吧。

有上面的这种写法。
我在读文件的时候有时候会用到这样。
但python3默认就是utf-8的。你创建一个新的txt,默认就是utf-8,没必要这样弄吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-27 17:55:50 | 显示全部楼层
bush牛 发表于 2017-10-26 20:59
有上面的这种写法。
我在读文件的时候有时候会用到这样。
但python3默认就是utf-8的。你创建一个新的tx ...

自己试试吧,如果你说得对,为什么还有这种写法,楼主我么要问呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 13:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表