|  | 
 
| 
第030讲:文件系统作业     编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  请教问题:为什么我的程序对所在目录下的“.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[2]:
 if (os.path.splitext(each11))[1] == '.txt':
 file.append((each[0],each11))
 print(file)
 answer = input('请问是否要打印关键字【{0}在文件中的具体位置(YES/NO)】:')
 #查找所有'.txt'文件下含有关键字'name'的行号和字符号
 for each11 in file:
 os.chdir(each11[0])
 f = open(each11[1],'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
 
隔壁也有个帖子一样的问题,现在直接 copy 了:
 
 报错原因:当前统计的文件下有多种编码格式的 txt 文本文件,导致 open 参数只能指定一种编码,而使得打开不同编码 txt 文件时候引发报错
 
 解决方法:创建一个新文件夹,将代码文件存放在新建文件夹内,再将你的 txt 测试文本按下面操作重新另存为设置下文件编码
 
 第一步,打开 txt 文件点击另存为:
 
 
 
 第二步,选择编码,这里选择 utf-8 ,那么 open 参数里面就必须带上 encoding = 'UTF-8':
 
 
 
 
 或者选择 ANSI ,如果是 ANSI 编码,那么 open 里面就不用加上 encoding 参数:
 
 
 
 
 | 
 |