|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import os
def search_file(start_dir, target):
os.chdir(start_dir) # 改变工作路径为当前文件夹 test1,初始的文件夹,
for each_file in os.listdir(os.curdir): # 将当前目录(文件)里的所有文件转换为列表,并迭代出所有文件
if each_file == target:
print(os.getcwd() + os.sep + each_file) # 使用os.sep,文件的路径分割符号 '\' 或 "/",她会根据你所处的平台,自动地采用相应的分割符号。
if os.path.isdir(each_file): # 如果文件在当前目录存在,继续执行下面的语句
search_file(each_file, target)
temp = os.getcwd() # 这是自己添加的内容
print("当前工作路径是%s" % temp) #这是自己添加的内容
# 递归调用
os.chdir(os.pardir) # os.pardir 返回当前目录的父目录,也就是上一级目录
# 递归调用后切记返回上一层目录,这里不懂
# 递归将参数传递进去,再返回来,知道循环或是返回条件不成立,也就是遍历了当前文件夹的所有文件
start_dir = input("请输入待查找的初始目录:")
target = input("请输入需要查找的目标文件:")
search_file(start_dir, target)
# 要找order1,我文件存储位置
D:\\testone\\testtwo\\testthree\\order1
D:\\testone\\order1
看不懂如何递归的,所以我在打印了当前路径:
显示结果:
请输入待查找的初始目录:D:\\testone
请输入需要查找的目标文件:order1
D:\testone\order1
当前工作路径是D:\testone\order1
D:\testone\testtwo\testthree\order1
当前工作路径是D:\testone\testtwo\testthree\order1
当前工作路径是D:\testone\testtwo\testthree
当前工作路径是D:\testone\testtwo
>>>
写了注释,我还是没明白如何递归的
如果没有加这两行
temp = os.getcwd() # 这是自己添加的内容
print("当前工作路径是%s" % temp) #这是自己添加的内容
输出结果为:
D:\testone\order1
D:\testone\testtwo\testthree\order1
还是没看懂,如何递归的文件的,求各位大神指点下
因为工作路径不是对一个函数来说的,是对整个python程序来说的。
假如不返回上一层目录的话函数递归调用返回后寻找下一个文件就会在返回的函数需要寻找的目录里面找。
至于递归寻找嘛,你可以把每一个函数理解成一个查找器,然而这些查找器只能查找1个目录,假如找到了新的目录,就会生成新的查找器来查找。
|
|