Уведомления

Группа в Telegram: @pythonsu

#1 Июль 19, 2016 11:19:11

Darksol89
Зарегистрирован: 2016-06-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с os.rename

Всем привет!

Подскажите плиз, возможно ли с помощью os.rename переименовать файл, но не все название, а только одно слово заменить?
Т.е. к примеру у меня есть 3 файла с именем “InnoSwitch-CH Flyback Design119.pdf_PIXls Designer_zh_hans”, разница только в расширении, вместо слова “PIXls Designer” мне нужно вставить другое слово.
Гуглил, но нашел только примеры с названием из чисел.

Как реализовать это на Питоне 3 ?

Офлайн

#2 Июль 19, 2016 11:47:33

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Работа с os.rename

Darksol89
как заменить подстроку в строке?

Офлайн

#3 Июль 19, 2016 12:14:25

Darksol89
Зарегистрирован: 2016-06-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с os.rename

Скорее всего да, питон изучаю недавно, не запомнил пока все правильные названия

Офлайн

#4 Июль 19, 2016 13:33:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Работа с os.rename

  
>>> import re
>>> 
>>> s = 'InnoSwitch-CH Flyback Design119.pdf_PIXls Designer_zh_hans'
>>> 
>>> o = re.sub(r'(\.pdf_)[^_]+(_zh_hans)$', r'\1word\2', s)
>>> o
'InnoSwitch-CH Flyback Design119.pdf_word_zh_hans'
>>> 



Отредактировано py.user.next (Июль 19, 2016 13:34:24)

Офлайн

#5 Июль 21, 2016 11:31:28

Darksol89
Зарегистрирован: 2016-06-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с os.rename

спасибо.
а как заставить скрипт заходить в папку, в которой лежат подпапки, лезть в каждую из них и переименовывать каждый 3-й файл, т.е. менять слово в них?
За меня код писать не нужно, желательно чтобы объяснили как это сделать, что применить или почитать про это конкретно. Дабы я знал как применить это в будущем

Офлайн

#6 Июль 21, 2016 12:35:12

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Работа с os.rename

На форуме есть тема - поиск файла - там даже код есть как просматривать все папки



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Июль 21, 2016 14:44:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Работа с os.rename

Darksol89
а как заставить скрипт заходить в папку, в которой лежат подпапки, лезть в каждую из них и переименовывать каждый 3-й файл, т.е. менять слово в них?
Функция os.walk() раскладывает сразу на папки и файлы, найдёшь примеры её применения, они все одинаковые.
Есть ещё os.listdir(), но там надо будет ещё определять где папка, а где файл через os.path.isdir().
Есть ещё и glob.glob(), но это довольно непрактичный модуль, так как не гибкий.

В основном ты заходишь в папку, берёшь имена файлов как обычные строки, потом к этим строкам применяешь какую-то свою функцию, которая принимает одну строку, а возвращает другую строку. И когда у тебя строки готовы (исходная и новая), ты просто передаёшь их в os.rename().
Загвоздка здесь только в том, что нельзя просто имена подавать в os.rename(), нужно сначала приделать их к пути той папки, в которой находишься, иначе os.rename() их не найдёт, так как будет искать эти имена в текущей папке, которая остаётся одной и той же с момента запуска скрипта. Поэтому нужно будет применять склеивание через os.path.join().



Отредактировано py.user.next (Июль 21, 2016 14:46:03)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version