python迭代文件列表,查找相同的文件名但不同的扩展名
因此,我有一份清单如下:python迭代文件列表,查找相同的文件名但不同的扩展名,python,list,list-comprehension,Python,List,List Comprehension,因此,我有一份清单如下: mylist=['movie1.mp4'、'movie2.srt'、'movie1.srt'、'movie3.mp4'、'movie1.mp4'] 注意:一个简单的测试列表,脚本将处理未知文件名和更多文件名 所以我想找到带有成对srt文件的电影文件,并将它们放入字典中。剩下的任何东西(即movie3.mp4)都将留在列表中,稍后再处理 我一直在玩列表理解,虽然它可能不会留下剩余数据,并允许我构建字典 重新导入 匹配=[x代表x,如果(re.sub('\.srt$','\
mylist=['movie1.mp4'、'movie2.srt'、'movie1.srt'、'movie3.mp4'、'movie1.mp4']
注意:一个简单的测试列表,脚本将处理未知文件名和更多文件名
所以我想找到带有成对srt文件的电影文件,并将它们放入字典中。剩下的任何东西(即movie3.mp4)都将留在列表中,稍后再处理
我一直在玩列表理解,虽然它可能不会留下剩余数据,并允许我构建字典
重新导入
匹配=[x代表x,如果(re.sub('\.srt$','\.mp4$',a)==x或re.sub('\.srt$','\.mp4$',a)==x),则在mylist中匹配a]
这将返回:
ValueError:要解压缩的值太多
你对我如何处理这个问题有什么想法吗?你对你的问题采取了错误的方法。最简单的方法是确定使用的文件的基名,并根据它对它们进行分组。一种可能的方法是使用 实施
groups = {key: set(value)
for key, value in groupby(sorted(mylist,
key = lambda e: os.path.splitext(e)[0]),
key = lambda e: os.path.splitext(e)[0])}
示例
>>> pprint.pprint(groups)
{'movie1': set(['movie1.mp4', 'movie1.srt']),
'movie2': set(['movie2.srt']),
'movie3': set(['movie3.mp4'])}
你对你的问题采取了错误的方法。最简单的方法是确定使用的文件的基名,并根据它对它们进行分组。一种可能的方法是使用 实施
groups = {key: set(value)
for key, value in groupby(sorted(mylist,
key = lambda e: os.path.splitext(e)[0]),
key = lambda e: os.path.splitext(e)[0])}
示例
>>> pprint.pprint(groups)
{'movie1': set(['movie1.mp4', 'movie1.srt']),
'movie2': set(['movie2.srt']),
'movie3': set(['movie3.mp4'])}
我将把这个任务划分为不同的关注点:首先构建字典,将具有相同根名称的文件分组;稍后检查哪些文件同时包含视频和字幕文件。(请不要使用正则表达式分割文件名,
os.path
在这里做得更好)
附:你打算如何处理带有字幕的
.mkv
文件 我会将任务划分为不同的关注点:首先构建字典,将具有相同根名称的文件分组;稍后检查哪些文件同时包含视频和字幕文件。(请不要使用正则表达式分割文件名,os.path
在这里做得更好)
附:你打算如何处理带有字幕的
.mkv
文件 这很有效。我以前没有使用过os.path.splitext;非常有用。谢谢这很有效。我以前没有使用过os.path.splitext;非常有用。谢谢