鱼C论坛

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

[已解决]Python第30讲动动手的第3题(问题是第二点,第一点可以不看)

[复制链接]
发表于 2020-7-21 15:02:37 | 显示全部楼层 |阅读模式

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

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

x
import os
def findvideo(file_street):
    file_type = []
    f = open('E:\\今朝落庭霰\\vedioList1.txt','w') #按照题干要求,创立一个文本文档,来存放视频文件的路径
    os.chdir(file_street)
    all_files = os.listdir(os.curdir) #罗列该目录下的所有文件
    for each_file in all_files:
        file_type.append(os.path.splitext(each_file)[1]) #分离该路径下的文件名和拓展名
        for each in file_type:
            if each in ['.mp4','rmvb','avi']: #找到的视频格式的文件,我就把它们写入创建的文本文档(vedioList1.txt)中
                f.writelines(os.getcwd() + os.sep + each_file +os.linesep)
            
    f.close()

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

以上是我的代码,我的问题集中在两点:(希望路过的大可以帮我解决一下第二点)
1.如果我输入的file_street中仍有文件夹,我的代码是没办法继续去搜索子文件夹里面的文件的(小甲鱼老湿调用了递归)
2.我自己的代码,去搜索file_street下的视频文件,可以得到一个txt文档,但是
屏幕截图(27).png
如图,左边为用小甲鱼老湿的代码得到的,右边为我自己得到的。问题就在于比如第一个视频A.mp4在文本文档中路径名出现了一次,但第二个视频B.mp4在文档中就出现了2次,以此类推。
我没看出来,自己的代码到底是哪里出了问题。希望有时间的各位可以抽空看一下我的代码,谢谢辽
最佳答案
2020-7-21 15:14:51
本帖最后由 Twilight6 于 2020-7-21 15:21 编辑


你用 append 加入列表了,导致你后面切割越多的文件,列表中元素越多,把路径写入文件次数也就越多了

而且你的 rmvb 和 avi 忘记加上 . 了
import os


def findvideo(file_street):
    f = open('ttt.txt', 'w')  # 按照题干要求,创立一个文本文档,来存放视频文件的路径
    os.chdir(file_street)
    all_files = os.listdir(os.curdir)  # 罗列该目录下的所有文件
    for each_file in all_files:
            each = os.path.splitext(each_file)[1]
            if each in ['.mp4', '.rmvb', '.avi']:  # 找到的视频格式的文件,我就把它们写入创建的文本文档(vedioList1.txt)中
                f.writelines(os.getcwd() + os.sep + each_file + os.linesep)

    f.close()


file_street = input('请输入待查找的初始目录:')
findvideo(file_street)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-21 15:14:51 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-21 15:21 编辑


你用 append 加入列表了,导致你后面切割越多的文件,列表中元素越多,把路径写入文件次数也就越多了

而且你的 rmvb 和 avi 忘记加上 . 了
import os


def findvideo(file_street):
    f = open('ttt.txt', 'w')  # 按照题干要求,创立一个文本文档,来存放视频文件的路径
    os.chdir(file_street)
    all_files = os.listdir(os.curdir)  # 罗列该目录下的所有文件
    for each_file in all_files:
            each = os.path.splitext(each_file)[1]
            if each in ['.mp4', '.rmvb', '.avi']:  # 找到的视频格式的文件,我就把它们写入创建的文本文档(vedioList1.txt)中
                f.writelines(os.getcwd() + os.sep + each_file + os.linesep)

    f.close()


file_street = input('请输入待查找的初始目录:')
findvideo(file_street)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-21 18:38:43 | 显示全部楼层
Twilight6 发表于 2020-7-21 15:14
你用 append 加入列表了,导致你后面切割越多的文件,列表中元素越多,把路径写入文件次数也就越多了

...

okk,谢谢您辽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 20:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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