|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
感觉这个作业超难!我写出来的程序无法运行,找不出毛病在哪里,只好过来请教群里的高手:
题目:编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)
程序如下:
def search_keywords(file_path,key_words):
"""search for key words in certain file, pointing\
out the number of line and position"""
import os
all_file = os.listdir(file_path)
pickup_file = []
for each in all_file:
if os.path.isfile(each):
if os.path.splitext(each)[1] == '.txt':
f = open(each)
row_count = 0
if key_words in f:
pickup_file.append(os.path.join(os.getcwd(),each))
print('在文件%s中找到关键字【%s】'% (join(os.getcwe(),each),key_words))
for each_line in f:
row_count += 1
position = dict()
if key_words in each_line:
key_pos = each_line.find(key_words)+1
while key_pos != -1:
position[row_count] = key_pos
key_pos = each_line.find(key_words,key_pos - 1)+1
print('关键字出现在第%s行,第%s个位置'%(row_count,position[row_count]))
f.close()
else:
search_keywords(each, key_words)
os.chdir(os.pardir)
file_path = input('请输入要查找的文件路径:')
key_words = input('请输入要查找的关键字:')
search_keywords(file_path,key_words)
可是每次运行程序都没结果:
请输入要查找的文件路径:D:\\Practice\\临时文件
请输入要查找的关键字:小甲鱼
>>>
本帖最后由 叼辣条闯世界 于 2021-7-31 12:30 编辑
- global file_hz,position
- def search_keywords(file_path,key_words):
- row_count = 0
- """search for key words in certain file, pointing\
- out the number of line and position"""
- import os
- os.chdir(file_path)
- all_file=os.listdir()
- pickup_file = []
- for each in all_file:
- if os.path.isfile(each):
- file_hz = os.path.splitext(each)
- if file_hz[1] == '.txt':
- try:
- f = open(each,encoding='gb18030')
- file_read = f.read()
- except:
- f = open(each,encoding='utf8')
- file_read = f.read()
- row_count = 0
- if key_words in file_read:
- position = dict()
- pickup_file.append(os.path.join(os.getcwd(),each))
- print('在文件' + each + '中找到关键字:%s'%key_words)
- f.seek(0,0)
- file_get_lines = int(len(f.readlines()))
- f.seek(0,0)
- for i in range(file_get_lines):
-
-
- file_readlines = f.readline()
- if key_words in file_readlines:
- row_count += 1
- key_pos = file_readlines.find(key_words)+1
- #while key_pos != -1:
-
-
- key_pos = file_readlines.find(key_words)+1
- print('关键字出现在第%s行,第%s个位置'%(row_count,key_pos))
- #break
- else:
- row_count += 1
-
-
-
-
-
- else:
- search_keywords(each, key_words)
- os.chdir(os.pardir)
-
- file_path = input('请输入要查找的文件路径:')
- key_words = input('请输入要查找的关键字:')
- search_keywords(file_path,key_words)
- input('任意键退出')
复制代码
|
|