Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2023 10:58:52

maxprof90
Зарегистрирован: 2022-05-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление файлов которые не подпадают под шаблон во вложенных папках

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

 from pathlib import Path
path = Path('F:/Photo/')
for file_name in path.rglob('*_2.jpg'):
    file_name.unlink()

Офлайн

#2 Фев. 27, 2023 11:29:24

maxprof90
Зарегистрирован: 2022-05-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление файлов которые не подпадают под шаблон во вложенных папках

Решение нашел самостоятельно

 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()

Офлайн

#3 Фев. 27, 2023 11:29:41

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1309
Репутация: +  113  -
Профиль   Отправить e-mail  

Удаление файлов которые не подпадают под шаблон во вложенных папках

  
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))

Отредактировано xam1816 (Фев. 27, 2023 11:29:57)

Офлайн

#4 Фев. 27, 2023 23:19:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Удаление файлов которые не подпадают под шаблон во вложенных папках

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]
>>>



Отредактировано py.user.next (Фев. 27, 2023 23:27:13)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version