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 ''
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")
添加回答
举报