鱼C论坛

 找回密码
 立即注册
查看: 1176|回复: 1

[已解决]《课后作业三十讲》第3小题对于自己所写答案的疑惑

[复制链接]
发表于 2021-2-6 17:14:08 | 显示全部楼层 |阅读模式

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

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

x
import os

def search(start_path):

    os.chdir(start_path)

    namelst = os.listdir(os.curdir)

    extension = ['.mp4','.rmvb','.avi']

    for each_file in namelst:

        if os.path.isfile(each_file):

            if os.path.splitext(each_file) in extension:

                f = open('D:\\vedioList.txt','x')

                final_path = start_path + each_file

                f.writelines(final_path)

                f.close()

        if os.path.isdir(each_file):

            search(each_file)

            os.chdir(os.pardir)


start_path = input('请输入待查找的初始目录:')

search(start_path)



在运行过后没有报错也没有结果,这是为什么呢?

还有一个小问题:小甲鱼的片名能搜到嘛?
最佳答案
2021-2-6 18:24:17
本帖最后由 jackz007 于 2021-2-6 18:33 编辑
import os

def search(start_path):
    pwd = os . getcwd()
    os . chdir(start_path)
    cwd = os . getcwd()
    extension = ['.mp4','.mkv' ,'.flv' , '.rmvb' , '.rm' , '.wmv' , '.avi']
    try:
        for each_file in os.listdir(os . curdir):
            if os . path . isfile(each_file):
                if os . path . splitext(each_file)[1] . lower() in extension:
                    f = open('D:\\vedioList.txt','a')
                    final_path = os . path . join(cwd , each_file)
                    f . write(final_path + '\n')
                    f . close()
            elif os . path . isdir(each_file): 
                search(each_file)
    except Exception as e:
        print(e)
    os . chdir(pwd)     
start_path = input('请输入待查找的初始目录:')
if os . path . exists('D:\\vedioList.txt') and  os . path . isfile('D:\\vedioList.txt'):
    os . remove('D:\\vedioList.txt')
search(start_path)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-6 18:24:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-2-6 18:33 编辑
import os

def search(start_path):
    pwd = os . getcwd()
    os . chdir(start_path)
    cwd = os . getcwd()
    extension = ['.mp4','.mkv' ,'.flv' , '.rmvb' , '.rm' , '.wmv' , '.avi']
    try:
        for each_file in os.listdir(os . curdir):
            if os . path . isfile(each_file):
                if os . path . splitext(each_file)[1] . lower() in extension:
                    f = open('D:\\vedioList.txt','a')
                    final_path = os . path . join(cwd , each_file)
                    f . write(final_path + '\n')
                    f . close()
            elif os . path . isdir(each_file): 
                search(each_file)
    except Exception as e:
        print(e)
    os . chdir(pwd)     
start_path = input('请输入待查找的初始目录:')
if os . path . exists('D:\\vedioList.txt') and  os . path . isfile('D:\\vedioList.txt'):
    os . remove('D:\\vedioList.txt')
search(start_path)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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