我有一个问题,感觉很容易,但我不能拿出一个令人满意的解决方案。
我有一个文件结构,目录中包含了非常多的文件。文件名只是它们的索引,扩展名未知。例如,第10个文件是“10. pdf”,第42个文件是“42. png”。可以有很多不同的扩展名。
我需要从python中访问第i个文件,给定索引i,但不知道扩展名,这种情况经常发生,所以我应该能够高效地完成它。
以下是我可以想到的部分解决方案:
1.我可以glob模式f"{i}.*"
但是,我认为glob会检查目录中的每个文件,这对于大量文件来说会非常慢。
1.我可以保存和预加载完整的名称在一个dict
,在一个JSON文件,如{..., 10: "10.pdf", ...}
这工作,但我必须加载和跟踪另一个沉重的对象。
1.如果我有一个所有允许的扩展名的列表,我可以测试所有的可能性。这感觉很奇怪,也没有必要,但这是我目前最好的猜测。
你觉得怎么样?这些建议中有一个是正确的吗?
1条答案
按热度按时间tcomlyy61#
正如我所想,你只需要文件名,而不是完整的文件名+扩展名。所以,一种方法是从文件中删除扩展名,例如:
例如,如果您的文件是'10.pdf',则file_name ='10'和ext ='. pdf',然后您可以将其添加到字典中以备将来使用:
另一种方法是使用正则表达式或“re”!如果你有一个模式(甚至是复杂的模式),“re”是很棒的!你需要输入你想要的模式,例如: