как в python Удалить файлы с расширением .log - PullRequest
0 голосов
/ 16 февраля 2020

Как я могу перечислить все файлы каталога в Python и удалить их по .log?

for root, dirs, files in os.walk(r'/home/m110/public_html/ts/'):
print(files)

output1281.log
output1020.log
log3.log
mem.py
output1087.log
bunker3.py
output1248.log
output1311.log
output1099.log
output1261.log
output1282.log
output1213.log
log43.log
output1291.log
output1095.log
output1209.log
usr.txt
output1210.log
log7.log
output1042.log
attack.py
output1032.log
output1318.log

Я запускаю этот код в Centos7, но мне просто нужен список файлов с расширением .log для время удаления

Ответы [ 3 ]

1 голос
/ 16 февраля 2020

Если вы хотите использовать os:

for root, dirs, files in os.walk('/home/m110/public_html/ts/'):
    for file in files:
        if file.endswith('.log'):
            os.remove(root +  '/' + file)

В Python 3+, вы можете использовать pathlib:

paths = pathlib.Path('/home/m110/public_html/ts/').glob('*.log')
for path in paths:
    path.unlink()
0 голосов
/ 16 февраля 2020
import os
import shutil
files= next(os.walk(r'/home/m110/public_html/ts/'))[2]
for filename in files:
    ex=filename.split(".")[-1]
    if ex=='log':
       #print ex
       os.remove(filename)
0 голосов
/ 16 февраля 2020

Этого также можно добиться, вызвав rm *.log в bash, но для python:

import os
from glob import glob
log_file_list = glob('folder/*.log')
for file in log_file_list:
    os.remove(file)

Это работает только для файлов верхнего уровня папки.

Glob сопоставляет шаблон пути с unix bash, os.remove удаляет файл с заданным путем.

Если Если вы хотите включить подпапки, вы можете установить флаг recursive=True и изменить выражение поиска следующим образом:

import os
from glob import glob
log_file_list = glob('folder/**/*.log', recursive=True)
for file in log_file_list:
    os.remove(file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...