Найти - Пользователи
Полная версия: Удаление файлов которые не подпадают под шаблон во вложенных папках
Начало » Центр помощи » Удаление файлов которые не подпадают под шаблон во вложенных папках
1
maxprof90
Добрый день.
Нужен скрипт удаляющий файлы которые не подпадают под шаблон во вложенных папках.
Скрипт, который удаляет по шаблону есть и он работает, но нужно его изменить, чтобы он наоборот оставлял файлы по заданной маске, а лишние удалил.

 from pathlib import Path
path = Path('F:/Photo/')
for file_name in path.rglob('*_2.jpg'):
    file_name.unlink()
maxprof90
Решение нашел самостоятельно

 from pathlib import Path 
path = Path('F:/Photo/') 
for file_name in path.rglob('*.jpg'): 
    if not file_name.name.endswith('_2.jpg'): file_name.unlink()
xam1816
  
import os
for root, dirs, files in os.walk("."):
    for file in files:
        if not file.endswith("*_2.jpg"):
            os.remove(os.path.join(root, file))
py.user.next
xam1816
 if not file.endswith("*_2.jpg"):
Астериск там не надо ставить, его нет в имени файла. Да и вообще лучше re использовать в таких вещах.

  
>>> import re
>>> 
>>> pat = r'^.+_2\.jpg$'
>>> 
>>> re.search(pat, 'file_2.jpg')
<_sre.SRE_Match object; span=(0, 10), match='file_2.jpg'>
>>> 
>>> re.search(pat, 'file_1.jpg')
>>> 
>>> re.search(pat, 'file_2.jpgx')
>>> 
>>> re.search(pat, '_2.jpg')
>>> 
>>> re.search(pat, 'f_2.jpg')
<_sre.SRE_Match object; span=(0, 7), match='f_2.jpg'>
>>>

  
>>> import re
>>> 
>>> def predicate(fname):
...     pat = r'^.+_2\.jpg$'
...     return re.search(pat, fname) is not None
... 
>>> predicate('file_2.jpg')
True
>>> 
>>> predicate('file_1.jpg')
False
>>> 
>>> predicate('file_2.jpgx')
False
>>> 
>>> predicate('_2.jpg')
False
>>> 
>>> predicate('f_2.jpg')
True
>>>

  
>>> import re
>>> 
>>> def predicate(fname):
...     pat = r'^.+_2\.jpg$'
...     return re.search(pat, fname) is not None
... 
>>> files = ('file_2.jpg',
...          'file_1.jpg',
...          'file_2.jpgx',
...          '_2.jpg',
...          'f_2.jpg')
>>> 
>>> list(map(predicate, files))
[True, False, False, False, True]
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB