文件的课后作业第4题
import osdict1 = {}
line = 0
position = 0
list1 = []
def search_file(keyword, confirm):
if confirm == 'YES':
for each in os.listdir(os.curdir):
line = 0 #初始化行数,列表,位置
list1.clear()
position = 0
if os.path.isdir(each): #递归判断是否是目录,并返回上一级目录
search_file(keyword,confirm)
os.chdir(os.pardir)
f = open(os.getcwd()+os.sep+each) #打开文件,判断keyword是否存在文档中
i f os.path.splitext(each) == '.txt' and keyword in f.read():
print('在文件【%s】中找到关键字【%s】'%(each,keyword))
for each_line in f: #逐行判断在哪,并存储位置
line += 1
if keyword in each_line:
while keyword in each_line: #多个关键词要用到列表
position += each_line.index(keyword)
list1.append(position)
dict1.setdefault(line,list1) #存到字典中
print('关键字出现在第%s行,第%s个位置'%(dict1.keys(),dict1.values()))
f.close()
keyword = input('请将该脚本放于待查找的文件夹内,输入关键字:')
confirm = input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' %(keyword))
list1=search_file(keyword, confirm)
题目大意:找到在py文件所在目录下(遍历所有目录)的所有txt文件里的输入的关键词并返回行数和位置
卡在了递归那行,无限重复同样的两个print{:5_99:} {:5_99:} {:5_99:} , 不知道是不是缩进问题,哈哈哈 搞了一堆,现在变成不输出位置了,无论怎么都没有,这从文件里读取出来的好像不是字符串,不能用in判断,只会返回空值
for each_line in f:
line += 1
if keyword in each_line:
while keyword in each_line:
position += each_line.index(keyword)
list1.append(position)
dict1.setdefault(line,list1)
print('关键字出现在第%s行,第%s个位置'%(dict1.keys(),dict1.values()))
页:
[1]