2

regexを使用してルートフォルダーをスキャンしているときに、1 つ以上の特定のタイプ (拡張子) のファイルのみを除外する方法を考え出そうとしていますos.walk。My Folder構造(検索対象)はこんな感じです。拡張子のないファイルに注意してください。

Directory: D:\Projects\5 Codes Cleaned\2012

SG
|---SG.zip
|---SOIL-Average.jpg
|---SWAT-Average.jpg
|---Test
1500_LT_Capped_2012
1500_LT_Capped_2012
1500_LT_Capped_2012
1500_LT_Capped_2012
1500_LT_Capped_2012
1500_LT_Capped_2012
1500_LT_Capped_2012
1500_LT_Capped_2012
PRESSURE-Average.png
SGAS-Average.png
SOIL-Average.png
SWAT-Average.png

またはリスト形式で:

[u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -P',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -P.npy',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -Sg',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -Sg.npy',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -So',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -So.npy',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -Sw',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\1500_LT_Capped_2012 -Sw.npy',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\PRESSURE-Average.png',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\SGAS-Average.png',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\SOIL-Average.png',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\SWAT-Average.png',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\SG\\SG.zip',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\SG\\SOIL-Average.jpg',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\SG\\SWAT-Average.jpg',
 u'D:\\Projects\\5 Codes Cleaned\\2012\\SG\\Test']

いくつかのアイデアを得るためにここで進行中のスレッドのいくつかを調べましたが、それを行うより簡単な方法があるかどうか疑問に思っています. os.walk これまでのところ、結果を除外するために以下のパターンを試しました。

regex = "^.*(?<!\.png)(?<!\.npy)$"    
# The only working one but tends to get messy 
# as more file types are to be excluded!

&

regex = "^(.+?)(?:\.(?:png|jpg))*$"   
# Does not filter out jpg or png...list all files

&

regex = '^.*\.(?!jpg$|png$)[^.]+$'    
# Filters out png & jpg but Does not include No-Extensions !

&

regex = '^.*\.*(?!.jpg$|.png$)'     
# Does not filter out png & jpg file
4

2 に答える 2