打开文件路径
寻找当前目录下文本文件中关键字的位置from pathlib import Path
kw = input("请将该脚本放于待查找的文件夹内,请输入关键字:")
m = list(Path.cwd().glob("**/*.txt")) #m -> 所有文件
print(m)
g = []#->文件对应位置
n = {}
for each in m:
each.open('r')
x = each.read()
if kw not in x:
each.close()
continue
else:
g.append(each)
for i in range(x.count('\n')):#每一行寻找
j = each.readline()
if kw in j:
n = j.find(kw)#->行数对应所在位置
else:
continue
g.append(n)
each.close()
ans = input(f"请问是否需要打印关键字【{kw}】在文件中的具体位置(YES/NO):")
for each in range(0,len(g),2):
print(f"在文件【{g}】中找到关键字【{kw}】")
if ans == 'YES':
print(f"关键字出现在第{list(g.keys())}行,第{g}个位置")
报错说each是路径而不是文件,请问这个怎么改
Traceback (most recent call last):
File "C:\Users\Zhou Yiyun\Desktop\测试\^第030讲-搜索关键字.py", line 11, in <module>
x = each.read()
AttributeError: 'WindowsPath' object has no attribute 'read'
求助求助
第 10 行代码 , each.open('r') 改成 each = each.open('r'),另外不建议用 int 类型作为字典的键
你代码的 30 行,g 是列表 没有 keys() 方法,你应该是想对 n 进行调用 keys() 方法吧?
Twilight6 发表于 2022-5-17 16:42
第 10 行代码 , each.open('r') 改成 each = each.open('r'),另外不建议用 int 类型作为字典的键
你 ...
谢谢提醒^o^
x = each.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal multibyte sequence
请问这个报错是什么意思{:10_282:} Ari小虎鱼 发表于 2022-5-17 17:10
谢谢提醒^o^
请问这个报错是什么意思
编码错误,文件编码和读取的编码不一致,你试试在 open 函数里面添加 encoding = "utf-8"
页:
[1]