循环浏览文件扩展名,查找非ASCII字符-Python
我编写了一个小Python程序,它查找包含非ASCII字符的文件的目录(及其子目录) 我想改进一下。我知道这个“目录”中的某些文件可能是ZIP、DTA/OUT、OMX、SFD/SF3等。。。应该具有非ASCII字符的文件。因此,我想知道这些文件是否存在,并筛选不应包含ASCII字符的文件,因为我的最终目标是找到不应包含非ASCII字符的文件,并将其删除(损坏的磁盘,其坏扇区包含TB的重要数据) 我的想法是进一步查看Python中try/except块的“except”部分中的文件,如下所示:循环浏览文件扩展名,查找非ASCII字符-Python,python,ascii,file-extension,file-encodings,Python,Ascii,File Extension,File Encodings,我编写了一个小Python程序,它查找包含非ASCII字符的文件的目录(及其子目录) 我想改进一下。我知道这个“目录”中的某些文件可能是ZIP、DTA/OUT、OMX、SFD/SF3等。。。应该具有非ASCII字符的文件。因此,我想知道这些文件是否存在,并筛选不应包含ASCII字符的文件,因为我的最终目标是找到不应包含非ASCII字符的文件,并将其删除(损坏的磁盘,其坏扇区包含TB的重要数据) 我的想法是进一步查看Python中try/except块的“except”部分中的文件,如下所示: t
try:
content.encode('ascii')
output.write(str(counter) + ", " + file + ", ASCII\n")
print str(counter) + " ASCII file status logged successfully: " + file
counter += 1
except UnicodeDecodeError:
output.write(str(counter) + ", " + file + ", non-ASCII\n")
print str(counter) + " non-ASCII file status logged successfully: " + file
counter += 1
当我开始编写代码时,我意识到通过询问文件是'.zip'
还是'.sfd'
pr'.omx'
,等等循环。。。这将是一个笨重的程序,而且将永远持续下去
除了一个接一个地搜索文件扩展名外,还有其他方法可以搜索一组文件扩展名吗?也许是一个包含这些扩展名的文件?还是我没想到的?如果这是一个愚蠢的问题,我提前表示歉意,但是Python中有太多很酷的函数,我确信我错过了一些可以帮助我的东西
干杯。我想既然没有任何答案,我可以用部分答案自己回答。我基本上采取了一种不同的方法,寻找一个特定的文件,该文件对于这个共享来说是丰富的,然后对每个文件都做同样的事情。这有点老套,但它会完成作业。我认为有一个比简单的排除列表更好的解决方案,但你知道这样做不会太慢,你正在做一个简单的正则表达式或字符串比较。它可能会帮助你的心态调整到正确的术语上。在几乎所有现代系统上,文件都包含字节,而不是字符。因此,您正在查找字节值128或更大。这些是“非ASCII”字节。如果您还想排除除换行符、制表符等以外的控件,则将查找某些小于32的字节值和127的字节值。感谢有关术语的课程。。。我会试着这样想,也许这会有助于我对这些问题的总体看法。