shanhong2021 发表于 2021-6-29 09:05:32

os作业问题

def search_file(path, filename):
    import os
    os.chdir(path)
    allfiles = os.listdir(os.curdir)
    for each_file in allfiles:
      if filename == each_file:
            print(os.getcwd()+os.sep+each_file)
      elif os.path.isdir(each_file):
            search_file(each_file, filename)
            os.chdir(os.path.pardir)
    else:
      print('没有此文件。')

path = input('请输入要查找的范围:')
filename = input('请输入要查找的文件名:')
search_file(path, filename)
输出

请输入要查找的范围:E:\A
请输入要查找的文件名:a.txt
E:\A\B\a.txt
没有此文件。
没有此文件。
没有此文件。
问题:
OS的一个课后作业。我基本按照小甲鱼的写的就想加一个没有找到文件时的提醒结果因为递归调用函数所以有几个文件夹就会出现几次没有此文件。想半天也没有好的解决方案。所以小甲鱼也没有写没有找到文件的提醒吗?有没有办法解决啊?

Twilight6 发表于 2021-6-29 10:38:13



加在递归内自然会被多次执行,所以我们也可以这样:

import os

def search_file(path, filename):
    global flag
    os.chdir(path)
    allfiles = os.listdir(os.curdir)
    for each_file in allfiles:
      if filename == each_file:
            flag = True
            print(f'找到的文件路径为:{os.getcwd()+os.sep+each_file}')
      elif os.path.isdir(each_file):
            search_file(each_file, filename)
            os.chdir(os.path.pardir)

path = input('请输入要查找的范围:')
filename = input('请输入要查找的文件名:')
flag = False
search_file(path, filename)
if not flag:
    print(f'路径:{os.getcwd()} 内没有此文件。')

shanhong2021 发表于 2021-6-29 13:51:14

原来一直不知道flag要着干嘛。现在有一点明白了。flag在下面也可以赋值也是再次学到了。我每次觉得变量不事先声明肯定会报错。函数学得还是一知半解。多谢指教{:10_254:}
页: [1]
查看完整版本: os作业问题