为了账号安全,请及时绑定邮箱和手机立即绑定

python中的if语句,简写

python中的if语句,简写

沧海一幻觉 2021-08-17 10:08:46
我有一个语法错误,但我不知道为什么...这是问题所在: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")
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

这个怎么样?

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 ''



查看完整回答
反对 回复 2021-08-17
?
SMILET

TA贡献1796条经验 获得超4个赞

如果您使用的是 Python 2 并且没有使用过,这只是一个语法错误


from __future__ import print_function

因为您不能将print语句用作条件表达式的一部分。


Python 2.7.10 (default, Oct  6 2017, 22:29:07)

[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> "foo" if False else print("error")

  File "<stdin>", line 1

    "foo" if False else print("error")

                            ^

SyntaxError: invalid syntax

>>> from __future__ import print_function

>>> "foo" if False else print("error")

error

但是,您的代码容易受到竞争条件的影响。如果某个其他进程在您检查目录之后但在尝试创建它之前创建了该目录,则您的代码会引发错误。只需尝试创建目录,并捕获因此发生的任何异常。


# Python 2

import errno

try:

    os.makedirs(nombre)

except OSError as exc:

    if exc.errno != errno.EEXISTS:

        raise

    print ("Directorio existente")


# Python 3

try:

    os.makedirs(nombre)

except FileExistsError:

    print ("Directorio existente")


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 368 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信