Заметка начинающим, которые часто сталкиваются с подобной непоняткой.
Ситуация следующая, есть список файлов:
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
🇺🇸 Un homme âgé de 69 ans a tué par balle ses partenaires d’affaires au Texas, selon ABC.
Le tireur a ouvert le feu lors d’une réunion dans un centre commercial de la ville de Carrollton, faisant un mort et trois blessés. Plus tard, l’homme a abattu une autre personne dans son appartement.
#étatsunis#fusillade#victimes
🇺🇸 Au moins douze personnes ont été blessées dans une fusillade dimanche près du lac Arcadia dans l'Oklahoma, aux États-Unis, a rapporté la chaîne CBS News.
La chaîne KWTV-DT a indiqué plus tôt que la police avait trouvé quatre personnes présentant des blessures par balle à l’intérieur d’un véhicule.
#étatsunis#fusillade#victimes
🇺🇸 Des images de la fusillade à Virginia Beach.
Les faits se sont produits dans une rue après une altercation verbale entre deux groupes de jeunes. Au moins huit personnes ont été blessées, rapporte la chaîne ABC.
#étatsunis#fusillade#victimes
🇺🇸 Au moins douze personnes ont été blessées dans une fusillade dimanche près du lac Arcadia dans l'Oklahoma, aux États-Unis, a rapporté la chaîne CBS News.
Neuf blessés ont été transportés dans un centre médical de la capitale de l’État et trois autres vers un hôpital d’Edmond, ont précisé des responsables médicaux à la chaîne.
La chaîne KWTV-DT a indiqué plus tôt que la police avait trouvé quatre personnes présentant des blessures par balle à l’intérieur d’un véhicule.
Vidéo: Luke Brenner/X
#étatsunis#fusillade#victimes
🇹🇷 Une fusillade est survenue dans une école dans le sud-est de la Turquie, le tireur a été neutralisé, a rapporté la chaîne de télévision NTV. Quatre personnes ont été tuées, selon les autorités.
#turquie#fusillade#victimes
🇹🇷 Seize personnes ont été blessées lors d'une fusillade dans un établissement scolaire en Turquie, rapporte la chaîne de télévision TGRT.
L'assaillant a ouvert le feu de manière aléatoire dans la cour intérieure. Il a ensuite fait irruption dans le bâtiment, où il a continué à tirer. Certains élèves ont quitté l’établissement en sautant par les fenêtres.
L'assaillant, né en 2007, est décédé au cours de l'opération de police, a annoncé le gouverneur de la province de Sanliurfa, Hasan Sildak.
#turquie#fusillade#victimes
🇺🇦 La police nationale ukrainienne va mener une enquête administrative après que deux policiers ont fui les lieux d'une fusillade à Kiev, laissant des civils sans protection, a déclaré le ministre de l'Intérieur du pays, Igor Klimenko.
J'ai chargé le chef de la police nationale ukrainienne, Ivan Vygovski, de mener une enquête administrative sur les actions des policiers lors de l'attentat terroriste à Kiev et de fournir toutes les informations au Bureau d'enquête d'État,
a écrit M. Klimenko sur sa chaîne Telegram.
#ukraine#police#fusillade
🇧🇷 Un adolescent de treize ans a ouvert le feu dans une école située dans le nord-ouest du Brésil. Deux employés sont morts, plusieurs élèves ont été blessés, selon le site G1.
#brésil#fusillade#victimes
🇲🇽 Le nombre de blessés lors de la fusillade survenue sur le site archéologique de Teotihuacan, au Mexique, est passé à 13 personnes, a fait savoir le cabinet de sécurité mexicain.
#mexique#fusillade#victimes
🇷🇺Un étudiant a ouvert le feu dans le hall d'un établissement scolaire à Anapa. Il a été interpellé. Le bilan fait état d'un mort et de deux blessés, selon la chaîne Telegram de la Direction principale du ministère de l'Intérieur pour le territoire de Krasnodar.
D'après les premiers éléments, un étudiant de cet établissement a ouvert le feu aujourd'hui dans le hall d'un institut professionnel d'Anapa avec une arme non identifiée. Une personne est morte, deux personnes ont été blessées et reçoivent des soins. L'auteur présumé a été interpellé,
indique le communiqué.
#russie#fusillade#anapa
🇹🇭Un jeune homme a ouvert le feu dans une école dans le sud de la Thaïlande et a blessé plusieurs personnes, a rapporté le journal Khaosod.
Selon l’édition, le drame s'est produit dans la ville de Hat Yai, dans la province de Songkhla. La fusillade a fait des blessés, mais le nombre exact de victimes n'est pas connu. Selon les informations préliminaires, le suspect s'est introduit dans l'école peu avant la fin des cours et a pris en otage plus de 300 élèves et enseignants. Il est signalé que le tireur a 18 ans. Il a été interpellé.
#thaïlande#fusillade#bilan
🇺🇸 Un inconnu a ouvert le feu dans un centre commercial de l'État américain de Louisiane, rapporte Newsweek. Tout le monde a été évacué et aucun blessé n'est à déplorer.
#étatsunis#fusillade#louisiane