猿问

检查字符串是否包含任何文件格式的最有效方法?

我有一个包含数十万条路径的 .txt,我只需要检查每一行是文件夹还是文件。硬盘不在身边,无法使用os功能模块os.path.isdir()。我试过下面的代码,但它并不完美,因为.最后包含一些文件夹。

for row in files:
   if (row[-6:].find(".") < 0):
       folders_count += 1

如果字符串的结尾包含任何已知的文件格式(.zip、.pdf、.doc ...),则不值得测试,因为此 HD 中有数十种不同的文件格式。当我的代码读取 .txt 时,它会将每一行作为字符串存储在数组中,因此我的代码应该使用字符串格式。

文件夹路径示例:

'path1/path2/truckMV.34'

文件路径示例:

'path1/path2/certificates.pdf'


阿波罗的战车
浏览 112回答 1
1回答

慕勒3428872

我们不可能仅通过字符串来判断它是文件还是路径,因为扩展名只是程序选择以某种方式解码的任意可接受的字符串。话虽如此,如果我遇到同样的问题,我会尽力使用以下伪代码进行估计:创建一个哈希映射(或像在 Python 中那样的字典)对于文件的每一行,读取最后一位并查看是否有“.”。在最后一条路上在散列映射上为它创建一个密钥,其中包含您遇到“可能的扩展”次数的计数器。在浏览完所有列表后,您将获得可能的扩展名以及您遇到过的扩展名的集合。假设只有 1 次出现(或任何其他低任意数)的是路径而不是扩展。这种启发式的基础是,一个人不太可能在他们的桌面上有很多独特的扩展——但这只是我提出的一个假设。
随时随地看视频慕课网APP

相关分类

Python
我要回答