鱼C论坛

 找回密码
 立即注册
查看: 1895|回复: 2

[已解决]os作业问题

[复制链接]
发表于 2021-6-29 09:05:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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的一个课后作业。我基本按照小甲鱼的写的就想加一个没有找到文件时的提醒结果因为递归调用函数所以有几个文件夹就会出现几次没有此文件。想半天也没有好的解决方案。所以小甲鱼也没有写没有找到文件的提醒吗?有没有办法解决啊?
最佳答案
2021-6-29 10:38:13


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

  1. import os

  2. def search_file(path, filename):
  3.     global flag
  4.     os.chdir(path)
  5.     allfiles = os.listdir(os.curdir)
  6.     for each_file in allfiles:
  7.         if filename == each_file:
  8.             flag = True
  9.             print(f'找到的文件路径为:{os.getcwd()+os.sep+each_file}')
  10.         elif os.path.isdir(each_file):
  11.             search_file(each_file, filename)
  12.             os.chdir(os.path.pardir)

  13. path = input('请输入要查找的范围:')
  14. filename = input('请输入要查找的文件名:')
  15. flag = False
  16. search_file(path, filename)
  17. if not flag:
  18.     print(f'路径:{os.getcwd()} 内没有此文件。')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-29 10:38:13 | 显示全部楼层    本楼为最佳答案   


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

  1. import os

  2. def search_file(path, filename):
  3.     global flag
  4.     os.chdir(path)
  5.     allfiles = os.listdir(os.curdir)
  6.     for each_file in allfiles:
  7.         if filename == each_file:
  8.             flag = True
  9.             print(f'找到的文件路径为:{os.getcwd()+os.sep+each_file}')
  10.         elif os.path.isdir(each_file):
  11.             search_file(each_file, filename)
  12.             os.chdir(os.path.pardir)

  13. path = input('请输入要查找的范围:')
  14. filename = input('请输入要查找的文件名:')
  15. flag = False
  16. search_file(path, filename)
  17. if not flag:
  18.     print(f'路径:{os.getcwd()} 内没有此文件。')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-29 13:51:14 | 显示全部楼层
原来一直不知道flag要着干嘛。现在有一点明白了。flag在下面也可以赋值也是再次学到了。我每次觉得变量不事先声明肯定会报错。函数学得还是一知半解。多谢指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 09:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表