|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 chordblue 于 2019-8-5 12:52 编辑
我的源代码如下:
- def file_match(directory,filename):
- os.chdir(directory+'\\') #这里如果不加'\\'或os.sep,输入目录为d:则修改无效
- for each in os.listdir(os.curdir):
- if os.path.isfile(each):
- if each == filename:
- result.append(directory+'\\'+filename)
- else:
- file_match(directory+'\\'+each,filename)
复制代码
主函数里针对输入路径做了检查,并定义了result空列表来接收查询到的结果,如果没有结果则显示未查找到结果,为方便阅读这里就不贴出来了。
我的问题是在这个定义的函数里,正常我输入类似d:\\test这种路径来查询,结果都正确显示了,如果我把查询路径修改到上一级d:,就报错了:
- Traceback (most recent call last):
- File "D:\Program Files\Python37-32\exercise\exercise_030_02.py", line 28, in <module>
- file_match(directory,filename)
- File "D:\Program Files\Python37-32\exercise\exercise_030_02.py", line 12, in file_match
- file_match(directory+'\\'+each,filename)
- File "D:\Program Files\Python37-32\exercise\exercise_030_02.py", line 5, in file_match
- os.chdir(directory+os.sep)
- NotADirectoryError: [WinError 267] 目录名称无效。: '[color=Red]d:\\1.txt\\[/color]'
复制代码
我寻思着递归不应该会传入"d:\\1.txt\\"这种路径作为第一个参数值啊,毕竟我d盘根目录下1.txt是一个文件不是文件夹,各位大佬能否帮忙分析分析?
另外,我看课后答案里递归调用后要返回上一级目录,这个步骤有必要吗,不是很理解。 |
|