xizi123 发表于 2020-8-1 18:53:42

第030讲:文件系统作业 指定的‘.txt’文件已经找到,但最后还是报错!!!

第030讲:文件系统作业   编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)
请教问题:为什么我的程序对所在目录下的“.txt”都能找到,但对于查找关键字在文件中的具体位置时却找不到或者报错!!请大佬指点!!!

报错现象


import os
name = input('请将该脚本放于待查找第文件夹内,请输入关键字:')
os.chdir('e:\\')
print(os.getcwd())
file_name = os.walk('e:\\')
file = []
result = []
num_hh = 0
num_zf = 0
#查找指定目录下所有'.txt'文件
for each in file_name:
    for each11 in each:
      if (os.path.splitext(each11)) == '.txt':
            file.append((each,each11))
print(file)
answer = input('请问是否要打印关键字【{0}在文件中的具体位置(YES/NO)】:')
#查找所有'.txt'文件下含有关键字'name'的行号和字符号
for each11 in file:
    os.chdir(each11)
    f = open(each11,'r', encoding='UTF-8')      #报错地点
    for eachline in f:
      print(eachline)
      for each22 in eachline:
            
            if name == each22:
                num_zf += 1
                print('在文件【{0}】中找到{1}'.format(each11,name))
                print('【{0}】出现在第{1}行,第{2}位置'.format(name,num_hh,num_zf))
      num_hh += 1

zltzlt 发表于 2020-8-1 18:54:41

试试将 encoding='UTF-8' 去掉

Twilight6 发表于 2020-8-1 18:54:50


隔壁也有个帖子一样的问题,现在直接 copy 了:

报错原因:当前统计的文件下有多种编码格式的 txt 文本文件,导致 open 参数只能指定一种编码,而使得打开不同编码 txt 文件时候引发报错

解决方法:创建一个新文件夹,将代码文件存放在新建文件夹内,再将你的 txt 测试文本按下面操作重新另存为设置下文件编码

第一步,打开 txt 文件点击另存为:
https://xxx.ilovefishc.com/forum/202005/25/072650zqq1fqqmng421bqz.jpg

第二步,选择编码,这里选择 utf-8 ,那么 open 参数里面就必须带上 encoding = 'UTF-8':

https://xxx.ilovefishc.com/forum/202005/25/072647nvzjv2zemvgxet5g.jpg

或者选择 ANSI ,如果是 ANSI 编码,那么 open 里面就不用加上 encoding 参数:

https://xxx.ilovefishc.com/forum/202006/22/222937li4vv400i6v44b6z.png
页: [1]
查看完整版本: 第030讲:文件系统作业 指定的‘.txt’文件已经找到,但最后还是报错!!!