鱼C论坛

 找回密码
 立即注册
查看: 1053|回复: 2

还是关于30讲最后一题。。。

[复制链接]
发表于 2019-8-7 21:52:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import os

def word_in_file(file,word):    #判断文件中是否有关键字
    file1 = open(file)
    for each_line in file1:
        if word in each_line:
            return True
    return False

def print_line(dict1):          #这里看了答案才知道要对字典排序
    keys = dict1.keys()
    keys = sorted(keys)
    print('=====================================')
    for each in keys:
        print('关键字出现在第%s行,第%s个位置。' % (each,dict1[each]))

def word_find(path,word):
    os.chdir(path)
    for each in os.listdir(path):
        if os.path.isfile(each):            #判断是否是文件或是文件夹
            temptype = os.path.splitext(each)[1]
            if temptype == '.txt':
                result1 = word_in_file(each,word)   #判断文件中是否有关键字
                if result1:
                    path1 = os.path.join(os.curdir,each)
                    print('在文件【%s】中找到关键字【%s】' % (path1,word))
                    if decide == 'YES':                         #如果决定打印
                        dict1 = dict()
                        lines_num = 0
                        for each_line in file1:
                            list1 = []
                            lines_num += 1
                            if word in each_line:
                                get = each_line.find(word)
                                list1.append(get + 1)
                                get = each_line.find(word,get + 1)          #当初没想过要+1继续检索,看答案改的。。
                                dict1[lines_num] = list1
                file1.close()
                print_line(dict1)
        else:                       #如果是文件夹的情况
            path2 = os.path.join(os.curdir,each)
            word_find(path2,word)

word = input('请将该脚本放于待查找的文件夹内,请输入关键字:')
dicide = input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % word)
path = os.getcwd()
word_find(path,word)

上次参考了大佬的建议稍微改了改(虽然还是好多if。。。),自己也对照了答案,发现许多原本没想到或者不会的问题,可是现在还是运行不了。。。报错说找不到指定路径是怎么回事。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-7 23:05:38 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 chordblue 于 2019-8-7 23:32 编辑

找不到路径的原因可能是因为你递归调用时没返回上一级路径,在递归后加个返回上级的语句试试:
os.chdir(os.pardir())
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 08:26:54 | 显示全部楼层
chordblue 发表于 2019-8-7 23:05
找不到路径的原因可能是因为你递归调用时没返回上一级路径,在递归后加个返回上级的语句试试:
os.chdir(os ...

还是说找不到指定路径不过谢谢您的帮忙,我确实忘记返回上一层了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-17 13:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表