Usuwanie części nazwy z pliku w Python

Usuwanie części nazwy z pliku w Python
Paweł Gerc
  • Rejestracja:ponad 3 lata
  • Ostatnio:2 miesiące
  • Postów:44
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:

Kopiuj
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

edytowany 1x, ostatnio: Paweł Gerc
Spearhead
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 3 godziny
  • Postów:1002
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.

Kopiuj
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)
Paweł Gerc
  • Rejestracja:ponad 3 lata
  • Ostatnio:2 miesiące
  • Postów:44
0

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

artur_waw
  • Rejestracja:ponad 18 lat
  • Ostatnio:prawie 2 lata
  • Postów:155
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.