不知道程序在哪里出错
请教群里高手:题目:编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(要求查找mp4 rmvb, avi的格式即可),并把创建一个文件(vedioList.txt)存放所有找到的文件的路径
代码如下:
def vediofile_collection(file_path,vedio_set):
"""find all the vedio file is the designated dir\
and collect the path in a text named collection"""
import os
os.chdir(file_path)
collection = open('vedio_collection.txt','w')
all_file = os.listdir(os.curdir)
for each_file in all_file:
if os.path.isfile(each_file):
(file_name,file_ext) = os.path.splitext(each_file)
if file_ext in vedio_set:
collection.write(os.path.join (os.curdir,each_file))
if os.path.isdir(each_file):
vediofile_collection(each_file,vedio_set)
os.chdir(os.pardir)
collection.close()
f = open('vedio_collection.txt')
print(f.read())
f.close()
file_path = input('请输入要查找的文件夹:')
vedio_set = set(('mp4','rmvb','avi'))
vediofile_collection(file_path,vedio_set)
运行结果是空荡荡的,啥都没有:
请输入要查找的文件夹:D:\\临时文件\\练习本
>>>
splitext 分隔时后缀会带 . 点,导致你 if 始终不成立。递归过程反复执行 open('vedio_collection.txt','w') 覆盖文件内容,导致文件每次都重新创建
另外导入尽量放函数外,set 函数可以不用,write 写入时加上换行符效果会更好
参考代码:
import os
def vediofile_collection(file_path, vedio_set):
os.chdir(file_path)
all_file = os.listdir(os.curdir)
for each_file in all_file:
if os.path.isfile(os.curdir + '\\' + each_file):
(file_name, file_ext) = os.path.splitext(each_file)
if file_ext in vedio_set:
collection.write(os.path.join(os.curdir, each_file) + '\n')
if os.path.isdir(each_file):
vediofile_collection(each_file, vedio_set)
os.chdir(os.pardir)
file_path = input('请输入要查找的文件夹:')
vedio_set = ('mp4', 'rmvb', 'avi')
collection = open('vedioList.txt', 'w')
vediofile_collection(file_path, vedio_set)
collection.close()
print(open('vedioList.txt').read()) 非常感谢指正!
但是我看不懂第10行,为什么要加上 os.curdir + '\\',单独用if os. path. isfile(each_file): 不行吗?有何不同?
页:
[1]