|
发表于 2022-2-24 18:45:32
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import os
File_name = input('请输入待查找的初始目录:')
target_file_name = input('请输入带查找的目标文件:')
def changedir(File_name,target_file_name):
a = os.chdir(File_name)
b = os.listdir(File_name)
for each_one in b:
if each_one == target_file_name:
print(os.getcwd()+os.sep+each_one)
if os.path.isdir(each_one):
changedir(each_one,target_file_name)
os.chdir(os.pardir)
changedir(File_name, target_file_name)
看了答案之后自己写的,为什么for循环中的b的位置只能用os.listdir(os.curdir),我这样写就会报错啊
第一个问题:因为你在递归的过程中,你已经切换到 File_name 下了,当前目录已经没有 File_name 这个目录了,所以你用File_name就会报错了,你应该是 listdir当前目录的
第二个问题:你切换到了下一级目录,递归到没有目录可以递归了,当然要返回上一级目录了
- import os
- File_name = input('请输入待查找的初始目录:')
- target_file_name = input('请输入带查找的目标文件:')
- def changedir(File_name,target_file_name):
- os.chdir(File_name) # 这里只是切换目录,不需要赋值
- b = os.listdir(".") # 这里应该用当前目录 .
- for each_one in b:
- if each_one == target_file_name:
- print(os.getcwd()+os.sep+each_one)
- if os.path.isdir(each_one):
- changedir(each_one,target_file_name)
- os.chdir(os.pardir)
- changedir(File_name, target_file_name)
复制代码
|
|