我寫了一個小小的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