Это напечатает массив строк, которые соответствуют регулярному выражению. Это запустит регулярное выражение для каждого файла и папки в каталоге,и если какой-либо файл или папка содержит совпадение, это сопоставление добавляется в массив 'm'Примечание: не рекурсивно.
import os
import sys
import re
firstarg=sys.argv[1]
a = str(firstarg)
files = os.listdir(a)
m = []
for f in files:
match = re.search(r'(?<=T)(.*)(?=\()', f)
if( match != None):
m.append( match.group() )
print (m)
Пример:sys.argv [1] = '/'Дерево файлов:
- /
- File_Tvalue1 (
- File_Tvalue2 (
- Folder_Tvalue3 (* 1017)*
Результат:['value1', 'value2', 'value3']
Если вы хотите, чтобы он был рекурсивным и функцией.
import os
import sys
import re
def FindMatchesInDirectory(directory, afterRegex, beforeRegex, recursive=True):
results = []
for r, d, f in os.walk(directory):
for path in f:
match = re.search(r'(?<='+str(afterRegex)+')(.*)(?='+str(beforeRegex)+')', str(path))
if( match != None):
results.append( match.group() )
for path in d:
match = re.search(r'(?<='+str(afterRegex)+')(.*)(?='+str(beforeRegex)+')', str(path))
if( match != None):
results.append( match.group() )
if ( recursive != True):
break
return results
Пример: получить все совпадения рекурсивно. Любое значение между 'T' и '('
print (FindMatchesInDirectory(sys.argv[1], 'T', '\('))
Результат:['value3', 'value2', 'value1', 'value4']
Пример: получить все совпадения без рекурсии
print (FindMatchesInDirectory('/', 'T', '\(', False))
Результат:['value3', 'value2', 'value1']