鱼C论坛

 找回密码
 立即注册
查看: 1214|回复: 3

[已解决]30讲的第2题

[复制链接]
发表于 2017-9-15 20:22:53 | 显示全部楼层 |阅读模式

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

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

x
  题目是输入一个初始路径,再输入一个文件名,程序会查找这个路径下得文件名是否存在。
参考答案中:
  1. import os

  2. def search_file(start_dir, target) :
  3.     os.chdir(start_dir)
  4.    
  5.     for each_file in os.listdir(os.curdir) :
  6.         if each_file == target :
  7.             print(os.getcwd() + os.sep + each_file) # 使用os.sep是程序更标准
  8.         if os.path.isdir(each_file) :
  9.             search_file(each_file, target) # 递归调用
  10.             os.chdir(os.pardir) # 递归调用后切记返回上一层目录

  11. start_dir = input('请输入待查找的初始目录:')
  12. target = input('请输入需要查找的目标文件:')
  13. search_file(start_dir, target)
复制代码

第10行递归调用那行,函数调用的第一个参数是each_file,但是each_file应该只是一个文件或者文件夹的名字啊,不像start_dir是一个路径,为什么可以实现呢??我觉得应该是start_dir+os.sep+each_file才对啊
最佳答案
2017-9-16 09:55:53
2017-09-16_095527.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-16 09:55:53 | 显示全部楼层    本楼为最佳答案   
2017-09-16_095527.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-9-16 19:15:10 | 显示全部楼层

大神回答的好像不是我要问的,可能是我没有表达清楚。
函数search_file(start_dir,target)中,参数start_dir是一个路径,例如是C:\A\B,在第10行的递归调用中,用了search_file(each_file,target),但是each_file不是一个路径,而是一个文件夹的名字(比如文件夹B下得文件夹C),所以我不明白为什么像search_file(B,target)为什么也能实现这个递归。是不是只要是在当前目录下,就不用再输入前面的路径了?比如当前目录是C:\A\B , B目录里有文件夹C ,如果我要用C:\A\B\C做为参数调用到函数search_file('C:\\A\\B\\C',target)里,就只用search_file(C,target)就行了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-16 19:52:45 | 显示全部楼层
本帖最后由 ba21 于 2017-9-16 19:57 编辑
工程狗 发表于 2017-9-16 19:15
大神回答的好像不是我要问的,可能是我没有表达清楚。
函数search_file(start_dir,target)中,参数start ...


这图画得不够漂亮吗?

看解答要仔细,别动不动就不是你要的。
os.chdir()已经把你的初始目录切换成当前工作目录,不管你传递归也好,直接进入下级目录也好,直接打文件夹名,和文件名即可。图说得不够清楚吗?
DOS命令用过吧.
如果你要调用python.exe 是首先要进入到python目录没错吧。
如果你还要进入DLLs  cd DLLs 就可以没错吧。没必要说非得在把全路径打一遍。
os.chdir() 就有这样的功能。图上说得清清楚楚;我也是醉了,就知道问却不好好看解答。。难道我给你上个图。

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +2 收起 理由
shizhou + 3 + 3 + 2

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-2 05:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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