python中的if语句,简写

我有一个语法错误,但我不知道为什么...


这是问题所在:


os.makedirs(nombre) if not existeCarpeta(nombre) else print ("Directorio existente")

我在打印中有一个指针,这是完整的功能:


def existeArchivo(nom):

   return os.path.isfile(nom)


def existeCarpeta(nombre):

   return os.path.isdir(nombre)


def creaCarpeta(nombre):

    os.makedirs(nombre) if not existeCarpeta(nombre) else print ("Directorio existente")


沧海一幻觉
浏览 369回答 2
2回答

炎炎设计

这个怎么样?print ("Directorio existente") if existeCarpeta(nombre) else os.makedirs(nombre)它会None在目录不存在的情况下打印,但它确实会为您创建它。您也可以这样做以避免打印 None ,但它非常尴尬:s = ("Directorio existente") if existeCarpeta(nombre) else os.makedirs(nombre); print s if s else ''

SMILET

如果您使用的是 Python 2 并且没有使用过,这只是一个语法错误from __future__ import print_function因为您不能将print语句用作条件表达式的一部分。Python 2.7.10 (default, Oct&nbsp; 6 2017, 22:29:07)[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> "foo" if False else print("error")&nbsp; File "<stdin>", line 1&nbsp; &nbsp; "foo" if False else print("error")&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^SyntaxError: invalid syntax>>> from __future__ import print_function>>> "foo" if False else print("error")error但是,您的代码容易受到竞争条件的影响。如果某个其他进程在您检查目录之后但在尝试创建它之前创建了该目录,则您的代码会引发错误。只需尝试创建目录,并捕获因此发生的任何异常。# Python 2import errnotry:&nbsp; &nbsp; os.makedirs(nombre)except OSError as exc:&nbsp; &nbsp; if exc.errno != errno.EEXISTS:&nbsp; &nbsp; &nbsp; &nbsp; raise&nbsp; &nbsp; print ("Directorio existente")# Python 3try:&nbsp; &nbsp; os.makedirs(nombre)except FileExistsError:&nbsp; &nbsp; print ("Directorio existente")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python