如何解决检查字符串是否包含任何文件格式的最有效方法?
我有一个带有成千上万个路径的.txt文件,我只需要检查每一行是文件夹还是文件。硬盘驱动器不在我身边,所以我无法将模块var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var xml = this.responseXML;
var inputs = xml.getElementsByTagName("input");
var transitions = xml.getElementsByTagName("transition");
var numInputs = inputs.length;
var numTransition = Math.min(transitions.length,4);
var names = [];
var types = [];
var isTitle = [];
var transNames = [];
inputsTmp = inputs;
for(var i = 0; i < numInputs; i++){
...
}
for(var i = 0; i < numTransition; i++){
...
}
...
$.getScript("http://" + server + "/controllerupdate/?refresh=1");
playbackUpdater();
window.setInterval(controllerUpdate,500);
window.setInterval(playbackUpdater,1000);
}
};
xhttp.open("GET","http://" + server + "/api/",true);
xhttp.send();
与os
函数一起使用。我已经尝试过下面的代码,但是它并不完美,因为某些文件夹的末尾包含os.path.isdir()
。
.
该字符串的结尾是否包含任何已知的文件格式(.zip,.pdf,.doc ...),这是不值得测试的,因为此HD内部有数十种不同的文件格式。当我的代码读取.txt时,它将每一行存储为字符串,存储在数组中,因此我的代码应使用字符串格式。
文件夹路径的示例:
for row in files:
if (row[-6:].find(".") < 0):
folders_count += 1
文件路径示例:
'path1/path2/truckMV.34'
解决方法
我们无法仅通过字符串来判断它是文件还是路径,因为扩展名是程序选择以某种方式解码的任意可接受的字符串。
话虽如此,如果我遇到同样的问题,我会尽力用以下伪代码进行估算:
- 创建哈希图(或Python中的字典)
- 对于文件的每一行,请读取最后一位,看看是否有“。”。在最后一条路
- 在哈希图中为它创建一个密钥,并带有一个计数器,该计数器可以显示您遇到“可能的扩展”的次数。
- 浏览所有列表后,您将获得一系列可能的扩展以及遇到的扩展数量。假定只有1次出现(或其他任意低的任意数字)的路径是路径而不是扩展。
这种启发式的基础是,一个人不太可能在其台式机上拥有很多独特的扩展程序-但这只是我想出的一个假设。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。