Usuwanie części nazwy z pliku w Python

0

Dzień dobry,
mam pliki o takich nazwach KK-1234-1.png, ; KK-2342-2.png itd (jest ich tysiące) czasami się zdarza że w tych nazwach są niechciane znaki takie jak kropki, przecinki albo spacje. Potrzebuję napisać program który mi będzie usuwał takie znaki, w przyszłości taki kod będę chciał edytować gdyby pojawiły się inne znaki. Napisałem taki skrypt:

from os import remove
import glob

def remove_part_of_name(files):

    for f in glob.iglob(files + '/*.png'):     #Tutaj chciałem żeby program się dostał do folderu z plikami i żeby patrzył na pliki z .png
        files1 = remove(',')                      #Tutaj chciałem żeby usunął mi z każdego pliku który ma .png przecinek 
        
remove_part_of_name("C:\\Users\\xxx\\Desktop\\próba")

i oczywiście wyskoczył błąd że python nie wie co to jest w nawiasie remove

Jeśli macie jakieś dobre pomysły chętnie się posłucham a na razie szukam może jakiś innych metod

2

Możesz użyć os.rename(stara_nazwa, nowa_nazwa), a znaki usunąć wyrażeniem regularnym zastępując zbiór znaków r'[ ,-]' na pusty z użyciem re.sub.

import glob
import os
import re

for old_name in glob.glob('*.png'):
    new_name = re.sub(r'[ ,-]', '', old_name)
    os.rename(old_name, new_name)
0

Wszystko działa Panie Spearhead, dziękuje za pomoc :)

1

Możesz też zobaczyć sobie taką paczkę: https://github.com/un33k/python-slugify - i ogólnie jak ze stringa tworzyć tak zwany slug.

1 użytkowników online, w tym zalogowanych: 0, gości: 1