求帮忙
编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(要求查找mp4 rmvb, avi的格式即可),并把创建一个文件(vedioList.txt)存放所有找到的文件的路径,程序实现如图:import os
m=input("输入目录:")
def find(x):
os.chdir(x)
y=os.getcwd()
n=os.listdir(x)
for each in n:
if os.path.isfile(each)==True:
kuozhan=each.split(".")
if kuozhan in ["avi","mp4"]:
list.append(os.getcwd()+os.sep+each)
if os.path.isdir(each)==True:
return find(os.path.join(y,each))
os.chdir(os.pardir("."))
print(list)
list=[]
find(m)
总是只找到最里面一层文件 zhujuf 发表于 2020-4-26 15:07
试了下 把红色那个return去掉就成了,。。。但是想不通为什么
import os
主要错在 os.chdir(os.pardir) 缩进错误,还有里面的 os.pardir 你写成了函数调用,实际上它不是函数。
还有 你用 list 做变量名跟内置 list 类重名了,会出问题。
其他都是小问题 本帖最后由 hrp 于 2020-4-26 14:42 编辑
import os
m = input("输入目录:")
def find(x):
try:
os.chdir(x)
n = os.listdir(x)
for each in n:
if os.path.isfile(each):
kuozhan = os.path.splitext(each)
if kuozhan in [".avi", ".mp4"]:
listf.append(x + os.sep + each)
elif os.path.isdir(each):
find(os.path.join(x, each))
os.chdir(os.pardir)
except:
pass
listf = []
find(m)
print(listf)
hrp 发表于 2020-4-26 14:40
我这个哪里有逻辑错误啊。总是输出最后一层 hrp 发表于 2020-4-26 14:40
试了下 把红色那个return去掉就成了,。。。但是想不通为什么
import os
m=input("输入目录:")
def find(x):
os.chdir(x)
n=os.listdir(x)
for each in n:
if os.path.isfile(each)==True:
kuozhan=each.split(".")
if kuozhan in ["avi","mp4"]:
listf.append(x+os.sep+each)
elif os.path.isdir(each)==True:
return find(os.path.join(x,each))
os.chdir(os.pardir)
listf=[]
find(m)
print(listf)
页:
[1]