LINUX.ORG.RU
Ответ на: комментарий от Jopich1

А чего мудрёного то? будто я питон делал и виноват что он не понимает что-то типа sys.argv[2][:-1].

Deleted
()
Ответ на: комментарий от Jopich1

Мне просто нужно создать рядом файл с тем же именем но с другим расширением. Казалось бы простая задача оборачивается гемором.

Deleted
()
Ответ на: комментарий от Deleted

ну и нафига не сделать так:

filename = sys.args[2]
проверка бла-бла-бла
дальше уже использовать filename

уважай тех кто будет разгребать код после тебя

Jopich1
()

Сработает ли такая строка?

У тебя что, руки отвалились? Возьми и попробуй. А потом возьми резинового утёнка и попробуй объяснить ему что ты тут пытаешься сделать, и поймёшь какой бред написал.

И как вообще правильно такие вещи делаются?

Отрезать расширение и приклеить другое? Ну уж конечно не строковой интерполяцией, и точно не циклами. Как-то так:

# заменить последние 4 символа
modified_filename = original_filename[:-4] + '.newext'
# заменить всё начиная с последней точки
modified_filename = original_filename.rsplit('.', 1)[0] + '.newext'
slovazap ★★★★★
()
Ответ на: комментарий от hippi90

# заменить всё начиная с последней точки

filename.tar.gz сломает твое приложение

Каким же это образом? Ужель не заменит всё с последней точки?

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 1)
Ответ на: комментарий от slovazap

Ужель не заменит всё с последней точки?

Код должен заменить расширение, а не всё с последней точки. Чувствуешь разницу?

hippi90 ★★★★★
()
Последнее исправление: hippi90 (всего исправлений: 1)
Ответ на: комментарий от hippi90

Код должен заменить расширение, а не всё с последней точки. Чувствуешь разницу?

Код ничего никому не должен. Я не просто так привёл два варианта и подписал что конкретно они делают. Если бы ты не считал себя умнее других то смекнул бы что «заменить расширение» в общем случае невозможно, поэтому в зависимости от условий работает один из вариантов.

slovazap ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Ты и в несколько строк не поймёшь, будем уж честны.

anonymous
()
import os
import sys

if __name__ == '__main__':
    # ...
    key = os.path.splitext(sys.argv[2])[0]
    keyfile = open(key + '.key', 'wb')
    # ...
sanwashere ★★
()
Последнее исправление: sanwashere (всего исправлений: 1)

Если же требуется вообще все расширения заменить, то всё не намного сложнее:


import os
import sys

if __name__ == '__main__':
    # ...
    file_dir = os.path.dirname(sys.argv[2])
    file_name = os.path.basename(sys.argv[2])
    key_file_name = file_dir + os.path.sep + file_name.split('.', 2)[0] + '.key'
    # ...

sanwashere ★★
()
Ответ на: комментарий от sanwashere

Все так думают. Именно потому 2.7 еще и не списан)

makoven ★★★★★
()

Твой язык называется Perl

loz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.