Заметка начинающим, которые часто сталкиваются с подобной непоняткой.
Ситуация следующая, есть список файлов:
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
🇲🇽#Mexico: Footage shows clashes between CDS MF sicarios and CDS Chapitos cartel members during a firefight somewhere in Sinaloa.
At the beginning of the footage, a CDS MF sicario can be seen lighting the fuse of an improvised grenade before throwing it toward rival members.
(via @ProjectOSCT)
🇲🇽#Mexico: A shooting attack has occurred at the ancient pyramids of Teotihuacan earlier today, where a gunman opened fire randomly on nearby people with a revolver.
A Canadian tourist was killed in the attack, and several others were injured. The shooter later took his own life.
(via @war_noir)
🇲🇽#Mexico: A school shooting occurred earlier this morning local time in Lázaro Cárdenas, at the Anton Makarenko high school campus on Francisco Villa Street, just a few hours ago in Mexico.
Initial reports indicate that the shooter, a 15-year-old student, attempted to enter the school armed with a rifle. He was confronted by two teachers who tried to stop him, but he opened fire, killing both at the scene.
Municipal Police responded quickly, and footage circulating online shows the moment officers detained the suspect at the scene.
The last videos show some of the content that the shooter has posted on his Instagram story shortly before the attack.
These include footage of him brandishing a rifle, as well as content associated with “incel” ideology, including edits referencing a school shooting and Charles Manson.
🇲🇽#Mexico: Aerial footage showing a drone operated by the Sinaloa Cartel (Mayo Faction) dropping an explosive payload on a vehicle belonging to a rival cartel in Sinaloa.
(via @war_noir)
🇲🇽#Mexico: Chest-rig footage shows a firefight between SEDENA Mexican special forces and a group of sicarios in Guadalupe y Calvo municipality, in the mountainous region of Chihuahua, three days ago.
During a surveillance operation on a road connecting El Ocote and Atascaderos, the troops discovered a position held by 15 sicarios. Upon spotting the security forces, the gunmen opened fire.
In the exchange of gunfire, two sicarios were killed on the spot, while three others were captured. No casualties were reported among the security forces, although one officer was injured by what was described as shrapnel from a grenade.
(via @blogdelnarcomex on X)
🇲🇽#Mexico: Helmet cam footage from a Mexican soldier, part of the SEDENA Special Forces, during surveillance and reconnaissance operations in Nayarit State.
What is notable in this footage is the use of anti-drone equipment designed to jam drones operated by the cartels.
(via @overview.mexsof on IG)
Kabo-san-Lukas, #Mexico🇲🇽
The southern Mexican resort on the Pacific coast is the Kabo-San-Lucas resort.
Kabo-san-Lukas is a relatively young resort. It was founded about a hundred years ago. Its story begins with a small fishing village. Fishing brought a good income, and the village gradually grew.
There are amazingly beautiful beaches, fishing, walks on a yacht along the coast and a meeting with whales, surfing and immersion.
From January to March, whales swim close to the coastline. You can take a tour and go to the open sea to better see these huge mammals.
🇲🇽#Mexico: Reports are emerging of drone attacks in the town of Arroyo Grande, part of the municipality of Sanalona.
Drones carrying explosive payloads, reportedly operated by cartels, caused damage and civilian casualties in the area. Footage shows an injured civilian walking towards the street allegedly asking for help after being wounded. One vehicle was completely burned, and one person was killed in the attack.
(via @ZuluCanal)
🇲🇽#Mexico: A group of armed men, allegedly loyal to the CJNG cartel, have opened fire on the Municipal Presidency building in Jiquilpan, Michoacan.
(📹 via @belikmexican)
🇲🇽#Mexico: Clashes and arson attacks have continued into the night.
CJNG sicarios have stormed the state-owned "Banco del Bienestar" and attacked federal forces in the town of Ojuelos, Jalisco.
Other clashes were reported in multiple parts of Mexico, with CJNG sicarios targeting Mexican army troops.