Заметка начинающим, которые часто сталкиваются с подобной непоняткой.
Ситуация следующая, есть список файлов:
names = [
'image.bmp',
'second.txt.bkp',
'data.db',
'.config.cfg',
'file.ext.bkp'
]
И мы хотим убрать у них окончание ".bkp".
Не знаю зачем, пример довольно надуманный) Но суть он показывает, а это главное.
Те, кто еще не очень знаком с библиотекой os.path или pathlib, вероятно решат обработать имена как строки. И тут вполне подойдет метод строки strip().
Что делает этот метод? Он отрезает указанные символы по обеим сторонам строки. Если ничего не указать, то убирает невидимые символы (пробелы, табуляции и переносы строк).
В нашем случае будет выглядеть вот так:
>>> name.strip('.bkp')
То есть просим удалить строку '.bkp' по краям имени файла, если таковая есть.
Можно применить аналогичный метод rstrip(), чтобы отрезать только справа, но для этого примера используем обычный.
>>> for name in names:
>>> print(name.strip('.bkp'))
image.bm
second.txt
data.d
config.cfg
file.ext
Хм, что-то не то с нашими именами! Что случилось??? Видим нежелательное переименование в именах, где и близко не было указанной строки '.bkp'
А дело всё в том, что данный метод ищет не указанную строку, а указанные символы, и не важно в каком порядке.
Для метода strip() строка '.bkp' это не паттерн для поискаа список символов. Потому он отрезал симовол 'p' от '.bmp' и удалил точку из файла '.config.cfg'.
Как тогда правильно заменить именно паттерн? Для начинающего можно посоветовать метод строки replace(), который как раз использует для замены указанную строку целиком. В нашем примере заменим её на пустую строку.
>>> for name in names:
>>> print(name.replace('.bkp', ''))
image.bmp
second.txt
data.db
.config.cfg
file.ext
Уже лучше, но помните, это лишь пример про strip(). Для работы с именами файлов есть способы и более "правильные", дающие однозначно верный результат. Я взял файлы только в качестве примера. Даже replase() тут может сделать не то что ожидаем.
Просто впредь будьте внимательны с этим strip().
#basic
Papa #LeoneXIV riceverà in udienza, giovedì 9 aprile, alle ore 11.30, nella Sala Clementina del Palazzo Apostolico, in Vaticano, alcuni sportivi italiani, rappresentanti di tutti coloro che hanno partecipato alle #Olimpiadi e alle #Paralimpiadi invernali di #MilanoCortina, per mettere in risalto i successi degli atleti, la cui passione e le cui capacità hanno arricchito così tanto le nostre vite.
Proprio nel giorno di apertura dei Giochi, il 6 febbraio scorso, il Santo Padre ha firmato la Lettera “La vita in abbondanza” sul valore dello sport. A coordinare l’iniziativa dell’Udienza è il Dicastero per la Cultura e l’Educazione, con il coinvolgimento di Athletica Vaticana, in collaborazione con il Comitato Nazionale Olimpico Italiano (Coni) e il Comitato Italiano Paralimpico (Cip) Significativamente, durante l’Udienza sarà presente in sala la “Croce degli Sportivi” che, per tutta la durata dei Giochi, è stata collocata nella basilica di San Babila a Milano.
Alcuni atleti si recheranno poi al Dispensario Pediatrico “Santa Marta”, sempre in Vaticano, per incontrare alcune famiglie in situazioni di povertà e fragilità.
Nel giorno in cui #Milano accoglie la Croce Olimpica degli Sportivi in vista dei Giochi di #MilanoCortina, Papa #LeoneXIV auspica che "queste giornate di sana competizione contribuiscano a costruire ponti tra culture e popoli, promuovendo l’accoglienza, la solidarietà e la pace”.
Le parole del Pontefice arrivano nel capoluogo lombardo tramite un telegramma, a firma del Cardinale Segretario di Stato, Pietro Parolin, inviato a mons. Mario Delpini, Arcivescovo di Milano, che questa sera presiede Messa a San Babila, chiesa dove sarà custodita la Croce Olimpica per tutta la durata dei Giochi Olimpici e Paralimpici.
Il Santo Padre, salutando "quanti prendono parte alla celebrazione” “auspica" altresì che le #Olimpiadi suscitino "sentimenti di amicizia e di fraternità, rinsaldando la consapevolezza del valore dello sport al servizio dello sviluppo integrale della persona umana”.
“Siano giorni di festa! Sia festa per l’incontro di pace tra i popoli, sia festa per la bellezza delle gare e dei risultati, sia festa perché le Olimpiadi e le #Paralimpiadi non escludono nessuno”, le parole di mons. Delpini durante l'omelia.
“Siano giorni di profezia - prosegue l'Arcivescovo -, profezia della vocazione alla fraternità universale, profezia per la testimonianza di onestà in ogni cosa, profezia perché le Olimpiadi e le Paralimpiadi piantano nella vicenda umana eccellenza, amicizia, rispetto”.
Il presule chiede inoltre che siano “giorni di condivisione, perché la festa non dimentica le tragedie, perché le risorse non siano per i ricchi, ma per tutti, perché le Olimpiadi e le Paralimpiadi alimentano la cultura della pace”.
Dall'Arcivescovo anche il richiamo all'ascolto del corpo: "Il tuo corpo parla a chi ti incontra. Non ridurre il corpo a una macchina da sfruttare, non ridurre il corpo a un meccanismo complicato che ogni tanto deve essere aggiustato, non ridurre il corpo tuo e altrui a un oggetto da desiderare, non ridurre il corpo a una prigione di cui liberarsi, a un’apparenza di cui vergognarsi”.
“In queste settimane i Giochi saranno una specie di festival del corpo”, prosegue il presule, sottolineando che gli atleti “potranno istruire la città e tutti coloro che sanno ascoltare”. Lo #sport, per mons. Delpini, è “una scuola di ascesi, di morale, di umanità, di vita, di audacia e di fantasia”. Riferendosi alla croce degli sportivi, l’arcivescovo spiega: “Il corpo di Cristo, crocifisso per amore, è l’apertura per andare oltre e accogliere il mistero. Se volete sapere che cos’è l’amore, guardate a Gesù, adorate il corpo crocifisso e risorto”.
📸 Arcidiocesi di Milano