2011-11-13 101 views
1

我寫了一個小小的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中有很多很酷的功能,我相信我錯過了一些可以提供幫助的東西。

乾杯。

+0

我認爲有一個比簡單的排除列表更好的解決方案,但你知道這樣做不會很慢,你正在做一個簡單的正則表達式或字符串比較。 – brc

+0

它可能會幫助你的心理狀態在正確的術語上自我調節。在幾乎所有的現代系統中,文件都包含字節,而不是字符。所以你正在尋找128或更大的字節值。這些是「非ASCII」字節。如果您還想排除除換行符,製表符等之外的其他控件,那麼您將查找小於32的特定字節值和127. – wberry

+0

感謝關於術語的課程......我會嘗試這樣思考,也許這將有助於我對這些問題的總體看法。 – nicorellius

回答

0

我的數字,因爲我沒有任何答案可以繼續,並用部分答案自己回答。我基本上採取了不同的方法,並尋找一個特定的文件,預計這個共享會很豐富,然後將爲每個文件做同樣的事情。這是一種哈克式的,但它會完成任務。