鱼C论坛

 找回密码
 立即注册
查看: 853|回复: 2

[已解决]gbk是什么

[复制链接]
发表于 2018-5-5 23:36:02 | 显示全部楼层 |阅读模式

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

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

x
'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence
我在调试的时候,出现了上面这个,该如何解决


代码是第30讲的课后题第4题,找关键字的具体位置(暂时第几个字符还没弄出来= =请无视,弄到第几行就出错了)

----------------------------------------------------------------------
import os

def find(path,keywords,order):
    list1=[]

    for root,dirs,files in os.walk(path,True):
        for each in files:
            if '.txt' in each:
                link=os.path.join(root,each)
                list1.append(link)

    for i in list1:
        f1=open(i)
        count=0
        f2=f1.readline()
        if keywords in f2:
            print('在文件【%s】中找到关键字【%s】' % (i,keywords))      
            for eachline in f1:
                count+=1
                if keywords in eachline:
                    if order=='YES':
                        print('关键词出现在第%d行' % count)
               
        
            
path=input('请输入路径:')
keywords=input('请将该代码放于待查找的文件夹内,请输入关键字:')
order=input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % keywords)
find(path,keywords,order)

----------------------------------------------------------------------------------------


最佳答案
2018-5-6 08:09:35
  1. import os

  2. def find(path,keywords,order):
  3.     list1=[]

  4.     for root,dirs,files in os.walk(path,True):
  5.         for each in files:
  6.             if '.txt' in each:
  7.                 link=os.path.join(root,each)
  8.                 list1.append(link)

  9.     for i in list1:
  10.         f1=open(i, encoding='utf-8')#如果不行就把utf-8改成gbk
  11.         count=0
  12.         f2=f1.readline()
  13.         if keywords in f2:
  14.             print('在文件【%s】中找到关键字【%s】' % (i,keywords))      
  15.             for eachline in f1:
  16.                 count+=1
  17.                 if keywords in eachline:
  18.                     if order=='YES':
  19.                         print('关键词出现在第%d行' % count)
  20.                
  21.         
  22.             
  23. path=input('请输入路径:')
  24. keywords=input('请将该代码放于待查找的文件夹内,请输入关键字:')
  25. order=input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % keywords)
  26. find(path,keywords,order)
复制代码
捕获.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-6 08:09:35 | 显示全部楼层    本楼为最佳答案   
  1. import os

  2. def find(path,keywords,order):
  3.     list1=[]

  4.     for root,dirs,files in os.walk(path,True):
  5.         for each in files:
  6.             if '.txt' in each:
  7.                 link=os.path.join(root,each)
  8.                 list1.append(link)

  9.     for i in list1:
  10.         f1=open(i, encoding='utf-8')#如果不行就把utf-8改成gbk
  11.         count=0
  12.         f2=f1.readline()
  13.         if keywords in f2:
  14.             print('在文件【%s】中找到关键字【%s】' % (i,keywords))      
  15.             for eachline in f1:
  16.                 count+=1
  17.                 if keywords in eachline:
  18.                     if order=='YES':
  19.                         print('关键词出现在第%d行' % count)
  20.                
  21.         
  22.             
  23. path=input('请输入路径:')
  24. keywords=input('请将该代码放于待查找的文件夹内,请输入关键字:')
  25. order=input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % keywords)
  26. find(path,keywords,order)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-6 08:55:26 From FishC Mobile | 显示全部楼层
有没有对字符集不敏感的一种方式,检索出来的文件有时候同时存在gbk和utf-8文件,头大了,写个文件字符集判断函数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 21:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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