Форум сайта python.su
Добрый день.
Задача создать каталог и скопировать в него файл. Запускаться этот код будет несколько раз, поэтому нужно перехватить ошибку FileExistsError. Пишу код и получаю от PyCharm'a предупреждение о запрете использования голого except'a
import shutil import os try: os.mkdir('123') except: FileExistsError #Do not use bare except shutil.copy('my_file.mp3', '.' + '\\' + '123' + '\\')
try: os.mkdir('123') shutil.copy('my_file.mp3', '.' + '\\' + '123' + '\\') except FileExistsError: shutil.copy('my_file.mp3', '.' + '\\' + '123' + '\\')
Отредактировано SomethingButNotNickName (Март 4, 2018 16:36:39)
Офлайн
эээээ
import shutil import os try: os.mkdir('123') except FileExistsError: # двоеточие как бы не на том месте shutil.copy('my_file.mp3', '.' + '\\' + '123' + '\\')
Офлайн
SomethingButNotNickNameэээ а зачем так делать если можно просто
Как лучше склеить путь?
shutil.copy('my_file.mp3', '.\\123\\')
Офлайн
А PEP8 вам говорил что запись вида
try: some_code except: some_code
try: some_code except Exception: some_code
Офлайн
SomethingButNotNickNameесли у вас есть переменная с частью пути, то можно использовать шаблоны строк, например
Как лучше склеить путь?
s = 'will' '/some/path/{}/be/here'.format(s)
import os
s = 'sparta'
vars = ['this', 'is', s, '!!1']
os.sep.join(vars)
Офлайн
Спасибо, с двоеточием действительно все элементарно)
Офлайн
JOHN_16Стоп, в таком случае копирование выполнится только если вызовется ошибка FileExistsError.
эээээtry: os.mkdir('123') except FileExistsError: # двоеточие как бы не на том месте shutil.copy('my_file.mp3', '.' + '\\' + '123' + '\\')
Отредактировано SomethingButNotNickName (Март 5, 2018 13:33:07)
Офлайн
Тогда try finaly использовтаь надо. Это тоже элементарно - надо всего лишь обратиться в документацию или учебник/книгу
Офлайн
Для примера воспользуется делением и соответствующей ошибкой:
Команда печати “Hello world” это команда которую я хочу выполнить в любом случае (как копирование в предыдущем примере).
a = 0 b = 5 try: c = b / a except ZeroDivisionError: finally: print('Hello world')
Отредактировано SomethingButNotNickName (Март 5, 2018 14:00:22)
Офлайн
In [1]: try:
...: 1 / 0
...: except ZeroDivisionError:
...: pass
...: finally:
...: print('Oops')
...:
Oops
SomethingButNotNickNameне зная как делать правильно
И finally нам ничем не помог.
Офлайн