检查字符串是否包含任何文件格式的最有效方法?
Most efficient way to check if a string contains any file format?
我有一个包含数十万条路径的 .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'
我们不可能仅通过字符串来判断它是文件还是路径,因为扩展名只是程序选择以某种方式解码的任意可接受的字符串。
话虽如此,如果我遇到同样的问题,我会尽力用以下伪代码进行估计:
- 创建一个散列映射(或你在 Python 中的字典)
- 对于文件的每一行,读取最后一位并查看是否有“.”。在最后一条路径
- 在哈希映射上为它创建一个键,其中包含您遇到“可能的扩展”次数的计数器。
- 浏览完所有列表后,您将收集到可能的扩展名以及您遇到过的扩展名。假设只有 1 次出现(或任何其他低任意数)的是路径而不是扩展名。
这个启发式的基础是一个人不太可能在他们的桌面上有很多独特的扩展 - 但这只是我想出的一个假设。
我有一个包含数十万条路径的 .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'
我们不可能仅通过字符串来判断它是文件还是路径,因为扩展名只是程序选择以某种方式解码的任意可接受的字符串。
话虽如此,如果我遇到同样的问题,我会尽力用以下伪代码进行估计:
- 创建一个散列映射(或你在 Python 中的字典)
- 对于文件的每一行,读取最后一位并查看是否有“.”。在最后一条路径
- 在哈希映射上为它创建一个键,其中包含您遇到“可能的扩展”次数的计数器。
- 浏览完所有列表后,您将收集到可能的扩展名以及您遇到过的扩展名。假设只有 1 次出现(或任何其他低任意数)的是路径而不是扩展名。
这个启发式的基础是一个人不太可能在他们的桌面上有很多独特的扩展 - 但这只是我想出的一个假设。