不知道哪里有问题
没得到结果,问题出在哪?import os
def search_file(start,file):
for each in os.listdir(start):
if each == file:
print(os.getcwd() + os.sep + file)
else :
if os.path.isdir(each):
search_file(each,file)
os.chdir(os.pardir)
start = input("请输入待查找的初始目录:")
file = input("请输入需要查找的目标文件:")
search_file(start,file)
代码:查找文件并打印所在路径 本帖最后由 isdkz 于 2022-2-13 15:23 编辑
因为你没有切换到初始目录,所以你后面无法通过切换回上一级的方式返回上一层目录
import os
def search_file(start,file):
os.chdir(start) # 注意这里
for each in os.listdir(): # 注意这里
if each == file:
print(os.getcwd() + os.sep + file)
else :
if os.path.isdir(each):
search_file(os.getcwd() + os.sep + each,file) # 注意这里
os.chdir(os.pardir)
start = input("请输入待查找的初始目录:")
file = input("请输入需要查找的目标文件:")
search_file(start,file) isdkz 发表于 2022-2-13 15:20
因为你没有切换到初始目录,所以你后面无法通过切换回上一级的方式返回上一层目录
search_file(os.getcwd() + os.sep + each,file)这里的路径一定得是绝对路径吗? 不弃_ 发表于 2022-2-13 16:30
search_file(os.getcwd() + os.sep + each,file)这里的路径一定得是绝对路径吗?
用os.chdir切换到那个目录下了,递归传参的时候可以不用绝对路径的
import os
def search_file(start,file):
os.chdir(start) # 注意这里
for each in os.listdir(): # 注意这里
if each == file:
print(os.getcwd() + os.sep + file)
else :
if os.path.isdir(each):
search_file(each,file)
os.chdir(os.pardir)
start = input("请输入待查找的初始目录:")
file = input("请输入需要查找的目标文件:")
search_file(start,file) isdkz 发表于 2022-2-13 16:38
用os.chdir切换到那个目录下了,递归传参的时候可以不用绝对路径的
for each in os.listdir():这里listdir(start)加了路径就报错是怎么回事? 本帖最后由 isdkz 于 2022-2-13 18:12 编辑
不弃_ 发表于 2022-2-13 16:57
for each in os.listdir():这里listdir(start)加了路径就报错是怎么回事?
因为你不用绝对路径的话,你已经进到start目录下了,当前目录下没有start目录了,
所以你用os.listdir(start)当然报错了,你想用os.listdir(start)的话就得用绝对路径来递归或者加个上级目录也行,
即把 os.listdir(start) 改成 os.listdir(os.pardir + os.sep + start) isdkz 发表于 2022-2-13 17:01
因为你不用绝对路径的话,你已经进到start目录下了,当前目录下没有start目录了,
所以你用os.listdir ...
不太好理解{:5_100:} 不弃_ 发表于 2022-2-13 18:45
不太好理解
就是用os.cwd(start)切换到start目录下了,如果用的是相对目录的话,
此时的start目录应该是上一级目录的start了,那应该使用"../" + start了,而不是用start
页:
[1]