鱼C论坛

 找回密码
 立即注册
查看: 2116|回复: 24

代码哪里出问题了

[复制链接]
发表于 2018-3-22 23:28:19 | 显示全部楼层 |阅读模式

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

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

x

  1. import os
  2. def Finer(load,key):
  3.     if load=="D:":
  4.         os.chdir("D:\")
  5.     else:
  6.         os.chdir(load)
  7.         for each in os.listdir(os.curdir):
  8.             if os.path.isdir(each):
  9.                 try:
  10.                     Finer(os.getcwd()+os.sep+each,key)
  11.                     os.chdir(os.pardir)
  12.                 except PermissionError:
  13.                     pass
  14.             else:
  15.                 if key in each:
  16.                     print(os.getcwd()+os.sep+each)
  17. load=input("请输入你需要查找的路径,包括挂载点:")
  18. key=input("请输入需要查找的文件,可以是关键词:")
  19. Finer(load,key)
复制代码

直接搜索C盘反而没有,搜索C盘中的Windows又有了。。

直接搜索C盘反而没有,搜索C盘中的Windows又有了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-22 23:33:08 | 显示全部楼层
只能说没有正确递归。上代码吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-22 23:35:00 | 显示全部楼层
ba21 发表于 2018-3-22 23:33
只能说没有正确递归。上代码吧。

这是代码。
import os
def Finer(load,key):
    if load=="D:":
        os.chdir("D:\\")
    else:
        os.chdir(load)
        for each in os.listdir(os.curdir):
            if os.path.isdir(each):
                try:
                    Finer(os.getcwd()+os.sep+each,key)
                    os.chdir(os.pardir)
                except PermissionError:
                    pass
            else:
                if key in each:
                    print(os.getcwd()+os.sep+each)
load=input("请输入你需要查找的路径,包括挂载点:")
key=input("请输入需要查找的文件,可以是关键词:")
Finer(load,key)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-22 23:35:56 | 显示全部楼层
ba21 发表于 2018-3-22 23:33
只能说没有正确递归。上代码吧。

我的python安装在d盘的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 12:29:41 | 显示全部楼层
lz575757 发表于 2018-3-22 23:35
我的python安装在d盘的

                        try:
                                Finer(os.getcwd()+os.sep+each,key)
                                
                        except PermissionError:
                                pass
                        os.chdir(os.pardir)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-24 12:20:17 | 显示全部楼层
ba21 发表于 2018-3-23 12:29
try:
                                Finer(os.getcwd()+os.sep+each,key)
...

这样会进入无限循环,是电脑问题吧C:\Users\Administrator\Desktop\QQ拼音截图20180324121800.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-24 12:21:41 | 显示全部楼层
lz575757 发表于 2018-3-24 12:20
这样会进入无限循环,是电脑问题吧

....

不知道为什么会跳到那个路径

不知道为什么会跳到那个路径
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 12:33:10 | 显示全部楼层
lz575757 发表于 2018-3-24 12:20
这样会进入无限循环,是电脑问题吧

2018-03-24_123244.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-24 18:50:11 | 显示全部楼层

你这个是没访问到不能访问的目录,要是访问到不能访问的目录就会陷入无限循环了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 21:12:56 | 显示全部楼层
lz575757 发表于 2018-3-24 18:50
你这个是没访问到不能访问的目录,要是访问到不能访问的目录就会陷入无限循环了

你就不能遇问题,解决问题吗?
或者发个贴追问也行。
实在不行别学了。下个现成的代码用吧!·
人家微软系统都要时时打补丁。你上代码问什么人家当然帮你解答什么。你还想人家怎么解答?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 21:15:27 | 显示全部楼层
本帖最后由 ba21 于 2018-3-24 21:19 编辑
lz575757 发表于 2018-3-24 18:50
你这个是没访问到不能访问的目录,要是访问到不能访问的目录就会陷入无限循环了


你这个是没访问到不能访问的目录,要是访问到不能访问的目录就会陷入无限循环了

特么我又特地测式下,要是访问到不能访问的目录就会也没有陷入无限循环了啊。我说你特么是拿别人来玩的
2018-03-24_211809.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-3-25 00:51:36 | 显示全部楼层
ba21 发表于 2018-3-24 21:15
你这个是没访问到不能访问的目录,要是访问到不能访问的目录就会陷入无限循环了

特么我又特地测式下 ...

six six six
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 00:56:06 | 显示全部楼层

你这代码会一直跑好不好,你确定你哪代码停止了???我没玩你,我推理了好多遍,事实就是这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 11:36:45 | 显示全部楼层
lz575757 发表于 2018-3-25 00:56
你这代码会一直跑好不好,你确定你哪代码停止了???我没玩你,我推理了好多遍,事实就是这样

异常不止不能访问  except PermissionError:



  1. import os

  2. def Finer(load,key):
  3.     try:
  4.         os.chdir(load) # 访问文件夹要出错,在这就出错了
  5.         for each in os.listdir(os.curdir):
  6.             if os.path.isdir(each):
  7.                 Finer(os.getcwd()+os.sep+each,key)               
  8.                 os.chdir(os.pardir)                  
  9.             else:
  10.                 if key in each:
  11.                     print(os.getcwd()+os.sep+each)
  12.     except Exception as reason:
  13.         print(str(reason))
  14.             
  15.                      
  16. load=input("请输入你需要查找的路径,包括挂载点:")
  17. key=input("请输入需要查找的文件,可以是关键词:")
  18. Finer(load,key)
复制代码


2018-03-25_105500.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 11:40:43 | 显示全部楼层
捕获.PNG

一种是 路径不对  出现的错误

其他情况下能运行

但没有出现死循环的情况

你电脑疯了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 11:46:02 | 显示全部楼层
ba21 发表于 2018-3-25 11:36
异常不止不能访问  except PermissionError:

你这个情况属于运行,而且完成了搜索,肯定是你的目录里面有东西

其他的就不知道了,自己看看电脑吧还是,刚学这个,你的代码看不懂,但是能用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 11:53:05 | 显示全部楼层
仓小吉 发表于 2018-3-25 11:40
一种是 路径不对  出现的错误

其他情况下能运行

你都还没出现不能访问的目录,兄弟
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 11:58:17 | 显示全部楼层
ba21 发表于 2018-3-25 11:36
异常不止不能访问  except PermissionError:

就算不能是无限循环,但是会直接跳到根目录(盘目录)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 12:05:14 | 显示全部楼层
ba21 发表于 2018-3-25 11:36
异常不止不能访问  except PermissionError:

而且到了C:\\Documents and Settings这个目录就不会到就不会继续到C盘的下一个目录了

我就纳闷,这些怎么判断它不是文件夹

我就纳闷,这些怎么判断它不是文件夹
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 12:16:15 | 显示全部楼层
lz575757 发表于 2018-3-25 12:05
而且到了C:\\Documents and Settings这个目录就不会到就不会继续到C盘的下一个目录了

自己构造代码吧。
不知道你搞个 if load=="d:" 有毛用
  1. import os

  2. def Finer(load,key):
  3.     try:
  4.         os.chdir(load) # 访问文件夹要出错,在这就出错了
  5.         for each in os.listdir(os.curdir):
  6.             if os.path.isdir(each):
  7.                 Finer(os.getcwd()+os.sep+each,key)               
  8.                 os.chdir(os.pardir)                  
  9.             else:
  10.                 if key in each:
  11.                     print(os.getcwd()+os.sep+each)
  12.     except Exception as reason:
  13.         print(str(reason))
  14.             
  15.                      
  16. load=input("请输入你需要查找的路径,包括挂载点:")
  17. key=input("请输入需要查找的文件,可以是关键词:")
  18. Finer(load,key)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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