Zeus213 发表于 2020-9-29 17:13:21

请问这些代码有什么问题,为什么最后跑出来结果为空啊

import os

def search_video(start_dir):
    os.chdir(start_dir)
    content = []

    for each_file in os.listdir(os.curdir):
      type1 = os.path.splitext(each_file)
      if type1 in [".avi", ".mp4", ".rmvb"]:
            content.append(os.getcwd() + os.sep + each_file + os.linesep)
      if os.path.isdir(each_file):
            search_video(each_file)
            os.chdir(os.pardir)
    return content

program_dir = os.getcwd()

start_dir = input("请输入待查找的初始目录:")
vediolist = search_video(start_dir)
file = open(program_dir + os.sep + "vedioList.txt","w")
file.writelines(vediolist)
file.close()

疾风怪盗 发表于 2020-9-29 17:15:56

https://fishc.com.cn/thread-181125-1-1.html
看看相同问题的帖子

Zeus213 发表于 2020-9-29 17:26:27

疾风怪盗 发表于 2020-9-29 17:15
https://fishc.com.cn/thread-181125-1-1.html
看看相同问题的帖子

这个是我写的代码,和小甲鱼的那个有点区别,小甲鱼那个是可以正常运行的,有文件,文件也有内容,但是我这个的话就只能生成文件,文件里面没有内容

疾风怪盗 发表于 2020-9-29 17:33:46

Zeus213 发表于 2020-9-29 17:26
这个是我写的代码,和小甲鱼的那个有点区别,小甲鱼那个是可以正常运行的,有文件,文件也有内容,但是我 ...

因为content = []放在函数里的原因吧
递归后,就相当于重置了

放外面就好了

疾风怪盗 发表于 2020-9-29 17:39:03

你要和小甲鱼的不一样,就传两个参数,递归时把列表一起传进去
import os

def search_video(content,start_dir):
    os.chdir(start_dir)
    for each_file in os.listdir(os.curdir):
      type1 = os.path.splitext(each_file)
      if type1 in [".avi", ".mp4", ".rmvb",".ts"]:
            content.append(os.getcwd() + os.sep + each_file + os.linesep)
      if os.path.isdir(each_file):
            search_video(content,each_file)
            os.chdir(os.pardir)
    return content

program_dir = os.getcwd()
content = []
#start_dir = input("请输入待查找的初始目录:")
start_dir = r'D:\python\test'
vediolist = search_video(content,start_dir)
print(vediolist)
file = open(program_dir + os.sep + "vedioList.txt","w")
file.writelines(vediolist)
file.close()

Zeus213 发表于 2020-9-29 17:42:31

疾风怪盗 发表于 2020-9-29 17:39
你要和小甲鱼的不一样,就传两个参数,递归时把列表一起传进去

哦哦哦,感谢!!这下可以了
页: [1]
查看完整版本: 请问这些代码有什么问题,为什么最后跑出来结果为空啊