|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Peteryo01223 于 2021-1-25 16:15 编辑
原题:
编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在。如遇到文件夹,则进入文件夹继续搜索,程序实现如图(此处,图省略):
看了参考答案后,我的抄写:
- import os
- def function1(path, target):
- os.chdir(path)
- for each in os.listdir(os.curdir):
- if each == target:
- print(os.getcwd() + os.sep + each) # 使用os.sep,能够让程序更标准
- if os.path.isdir(each):
- function1(each, target) # 递归调用
- os.chdir(os.pardir) # 递归调用后切记返回上一层目录
- path = input('请输入待查找的原始目录:')
- target = input('请输入需要查找的目标文件:')
- function1(path, target)
复制代码
报错如下:
- ================== RESTART: C:/Users/user/Desktop/20210125c.py =================
- 请输入待查找的原始目录:e:\\
- 请输入需要查找的目标文件:DiasSetup
- Traceback (most recent call last):
- File "C:/Users/user/Desktop/20210125c.py", line 15, in <module>
- function1(path, target)
- File "C:/Users/user/Desktop/20210125c.py", line 10, in function1
- function1(each, target) # 递归调用
- File "C:/Users/user/Desktop/20210125c.py", line 10, in function1
- function1(each, target) # 递归调用
- File "C:/Users/user/Desktop/20210125c.py", line 4, in function1
- os.chdir(path)
- PermissionError: [WinError 5] 拒绝访问。: 'S-1-5-21-1246152009-554298428-845477721-1001'
- >>>
复制代码
问题:
1. 为何报错?怎么改呢?
2. 递归调用后,为何要切记返回上一层目录?我猜是为了防止死循环,但是具体什么意思,我不理解。
3. 我把输入的目录,改为 E:/7层佳能-3245/UFRII_Driver_V1402_W64_ZH_04/misc,查找的目标文件还是:DiasSetup,为何运行不报错,但无输出结果呢?如下:
- ================== RESTART: C:/Users/user/Desktop/20210125c.py =================
- 请输入待查找的原始目录:E:/7层佳能-3245/UFRII_Driver_V1402_W64_ZH_04/misc
- 请输入需要查找的目标文件:DiasSetup
- >>>
复制代码
|
|