我写了一个小小的Python程序,通过查看包含非ASCII字符的文件的目录(及其子目录)。通过文件扩展循环,寻找非ASCII字符 - Python
我想改善它。我知道这个“目录”中的某些文件可能是ZIP,DTA/OUT,OMX,SFD/SF3等...被连接成非ASCII字符的文件。所以我想知道这些在那里并且屏蔽那些不应该包含ASCII字符的字符,因为我的最终目标是找到不应该包含非ASCII字符的文件,这些文件不应该包含非ASCII字符并删除它们(具有TB值的坏扇区损坏的磁盘的重要数据)。
我的想法是通过能够在“除” /除了在Python块一试的部分看起来像这样的文件看得更远:
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中有很多很酷的功能,我相信我错过了一些可以提供帮助的东西。
干杯。
我认为有一个比简单的排除列表更好的解决方案,但你知道这样做不会很慢,你正在做一个简单的正则表达式或字符串比较。 – brc
它可能会帮助你的心理状态在正确的术语上自我调节。在几乎所有的现代系统中,文件都包含字节,而不是字符。所以你正在寻找128或更大的字节值。这些是“非ASCII”字节。如果您还想排除除换行符,制表符等之外的其他控件,那么您将查找小于32的特定字节值和127. – wberry
感谢关于术语的课程......我会尝试这样思考,也许这将有助于我对这些问题的总体看法。 – nicorellius