鱼C论坛

 找回密码
 立即注册
查看: 1998|回复: 8

零基础入门学习Python第30讲

[复制链接]
发表于 2020-1-29 18:11:40 | 显示全部楼层 |阅读模式

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

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

x
请问第二题答案中第06行os.curdir为什么不能改成start_dir?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-29 18:13:59 | 显示全部楼层
把答案代码发上来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-29 22:27:00 | 显示全部楼层
此处必须要有 os.chdir(start_dir) 的操作。因为 os.path.isfile 和 os.path.isdir 的判断,都是以 os.chdir(start_dir)为前提,也就是必须要在当前需判定的文件所在路径进行判断才有意义。如果目前你不在这个文件夹层次的话,那么所有的判断结果都是 False,也就不会执行之后的语句。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 17:46:53 | 显示全部楼层
zltzlt 发表于 2020-1-29 18:13
把答案代码发上来

import os

def search_file(start_dir, target) :
    os.chdir(start_dir)
   
    for each_file in os.listdir(os.curdir) :#这里的os.curdir为什么不能改成start_dir?
        if each_file == target :
            print(os.getcwd() + os.sep + each_file) # 使用os.sep是程序更标准
        if os.path.isdir(each_file) :
            search_file(each_file, target) # 递归调用
            os.chdir(os.pardir) # 递归调用后切记返回上一层目录

start_dir = input('请输入待查找的初始目录:')
target = input('请输入需要查找的目标文件:')
search_file(start_dir, target)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 17:48:43 | 显示全部楼层
Tom.. 发表于 2020-1-30 17:46
import os

def search_file(start_dir, target) :

肉眼看应该可以改成 start_dir
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 17:57:59 | 显示全部楼层
zltzlt 发表于 2020-1-30 17:48
肉眼看应该可以改成 start_dir

好像不太一样。。。
=========================== RESTART: D:\1Python\2.py ===========================这是没改运行的
请输入待查找的初始目录:D:
请输入需要查找的目标文件:1.py
D:\1Python\1.py
D:\1Python\PyCharm Edu 2019.3\1.py
>>>
=========================== RESTART: D:\1Python\2.py ===========================这是改后运行的
请输入待查找的初始目录:D:
请输入需要查找的目标文件:1.py
D:\1Python\1.py
Traceback (most recent call last):
  File "D:\1Python\2.py", line 17, in <module>
    find(ori,file_name)
  File "D:\1Python\2.py", line 10, in find
    find(i,file_name)
  File "D:\1Python\2.py", line 5, in find
    for i in os.listdir(ori):
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'DLLs'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 18:00:50 | 显示全部楼层
Tom.. 发表于 2020-1-30 17:57
好像不太一样。。。
=========================== RESTART: D:\1Python\2.py ========================= ...

看出来了,由于之前已经将工作目录切换到了 start_dir,所以不必改成 start_dir,改了反而报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 19:53:50 | 显示全部楼层
ok我好像明白了,只提供文件名无法进行os.listdir()操作,而os.curdir提供的路径就可以进行,所以不能用start_dir替换os.curdir。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-17 01:12:52 | 显示全部楼层
import os

dir_start0 = input('请输入要查找的初始目录:')
file_target0 = input('请输入要查找的目标文件:')

if dir_start0 == '':
    dir_start0 = os.getcwd() + '\\'
else:
    dir_start0 = dir_start0 + '\\'


def file_search(dir_start, file_target):
    os.chdir(dir_start)

    for each in os.listdir(dir_start):
        os.chdir(dir_start)
        if each == file_target:
            print(dir_start + each)
        elif os.path.isdir(each):
            file_search((dir_start + each +'\\'), file_target)


file_search(dir_start0, file_target0)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-21 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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