Элементы с фоном Transparent
получают события щелчка мыши при нажатии на фон, элементы с Null
этого не делают.
mkdir -p
функциональность следующим образом:
import errno
import os
def mkdir_p(path):
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else:
raise
Для Python ≥ 3.2, os.makedirs
имеет дополнительный третий аргумент exist_ok
, который, когда верный, включает mkdir -p
функциональность — , если mode
не обеспечивается, и существующий каталог имеет различные полномочия, чем намеченные; в этом случае, OSError
повышен как ранее.
Для Python ≥ 3.5, существует также pathlib.Path.mkdir
:
import pathlib
pathlib.Path("/tmp/path/to/desired/directory").mkdir(parents=True, exist_ok=True)
exist_ok
параметр был добавлен в Python 3.5.
Это легче, чем захват исключения:
import os
if not os.path.exists(...):
os.makedirs(...)
Правовая оговорка Этот подход требует двух системных вызовов, который более восприимчив к условиям состязания под определенными средами/условиями. Если Вы пишете что-то более сложное, чем простой одноразовый сценарий, работающий в управляемой среде, Вы - более обеспеченное движение с принятым ответом, который требует только одного системного вызова.
ОБНОВЛЕНИЕ 27.07.2012
я испытываю желание удалить этот ответ, но я думаю, что существует значение в потоке комментария ниже. По сути, я преобразовываю его в Wiki.
Я думаю, что ответ Asa чрезвычайно корректен, но Вы могли расширить его немного для действия больше как mkdir -p
, также:
import os
def mkdir_path(path):
if not os.access(path, os.F_OK):
os.mkdirs(path)
или
import os
import errno
def mkdir_path(path):
try:
os.mkdirs(path)
except os.error, e:
if e.errno != errno.EEXIST:
raise
они оба обрабатывают случай, где путь уже существует тихо, но позвольте другому ошибочному пузырю.
mkdir -p
дает Вам ошибку, если файл уже существует:
$ touch /tmp/foo
$ mkdir -p /tmp/foo
mkdir: cannot create directory `/tmp/foo': File exists
Таким образом, улучшение к предыдущим предложениям было бы к пере -raise
исключение, если os.path.isdir
возвраты False
(при проверке на errno.EEXIST
).
(Обновление) Видит также этот очень подобный вопрос; я соглашаюсь с принятым ответом (и протесты) кроме, я рекомендовал бы os.path.isdir
вместо os.path.exists
.
(Обновление) На предложение в комментариях, полная функция была бы похожа:
import os
def mkdirp(directory):
if not os.path.isdir(directory):
os.makedirs(directory)