2013-08-30 5 views
3

Как удалить файл, если он существует в каталоге с python 2.7, используя os/app?Как удалить элемент, если он существует?

Я попытался с

os.remove('directory/file.png') 

но если элемент не существует, я получил сообщение об ошибке.

+1

вы не можете просто игнорировать эту ошибку? – pqnet

+0

Me да, пользователи нет, я исправил свою проблему с помощью \t, за исключением OSError или NameError: –

+0

'NameError'? Почему вы получите 'NameError'? Это указывает на то, что вы используете несуществующую переменную, которая указывает на ошибку в вашем коде. – user2357112

ответ

0

Проверьте, если он существует первый:

if os.path.exists(path): 
    os.remove(path) 
+2

Это обескураживает, потому что файл может (например, другим процессом) между проверкой и фактическим удалением, поэтому в условиях гонки исключение будет выбрано и оставлено неотображенным – pqnet

+0

@pqnet. Но это очень теоретическая ситуация, если вы не делаете массивный параллелизм и т. д. –

+0

существует более безопасный шаблон try/except (и это рекомендуемый шаблон, который будет использоваться в python). Я хочу отказаться от этого. Кроме того, тот факт, что OP не знает заранее, если файл есть или нет, предполагает, что он может исчезнуть в любой момент – pqnet

7
try: 
    os.remove(path) 
except OSError: 
    pass 

Просто поймать ошибку и игнорировать его. (Не обращая внимания на ошибки, это не то, что вы могли бы сделать все ошибки, но здесь, это то, что вы хотите.)

+0

Обратите внимание, что, как предлагает документация на python (http://docs.python.org/2/library/ os.html # os.remove) 'os.remove' может вызвать исключение' OSError', если путь является каталогом (или по какой-либо другой причине невозможно удалить файл), что может быть или не быть тем, что вы хотите. – pqnet

0

использование исключение:

try: 
    os.remove("file_name") 
except: 
    return "something went wrong" 
Смежные вопросы