我可以在 Python 中使用多少个 if/else 语句



假设我有一些用 Python 2.7 编写的代码,这段代码依赖于一个 if 语句为真,然后使用另一个 if 条件和另一个取决于两个条件是否都为真 我可以在我的代码中永远这样做还是有限制? 无论如何,我可以做得更好吗?

#!/usr/bin/python
import os
if os.path.isfile('/tmp/EXAMPLE.txt'):
if os.path.getsize('/tmp/EXAMPLE.txt') == 0:
if os.access('/tmp/EXAMPLE.txt', os.W_OK) == True:
DATA = open('/tmp/EXAMPLE.txt', 'w')
if DATA.mode == 'w':
DATA.write('DATA')
DATA.close()
DATA = open('/tmp/EXAMPLE.txt', 'r')
if DATA.mode == 'r':
if 'DATA' in DATA.read():
print 'File size is no longer zero'
else:
print 'Data failed to write'
else:
print 'File could not be read from'
else:
print 'File could not written to'
else:
print 'File does not have write permissions'
else:
print 'File has data already'
else:
print 'File does not exist'

你可以继续前进 - 但你不应该。此代码不可读。相反,您应该反转 if 检查。例如,如果您的代码仅在路径是文件时才有效,则不是这样:

if os.path.isfile('/path/to/file'):
# rest of code

您可以这样做:

if not os.path.isfile('/path/to/file'):
# error handling, reporting, change of control etc.
# rest of code

以下是您的问题中的一些代码,以这种方式"反转":

#!/usr/bin/python
import os
import sys
if not os.path.isfile('/tmp/EXAMPLE.txt'):
print('File does not exist')
sys.exit(1)
if os.path.getsize('/tmp/EXAMPLE.txt') != 0:
print('File has data already')
sys.exit(1)
if os.access('/tmp/EXAMPLE.txt', os.W_OK) == False:
print('File does not have write permissions')
sys.exit(1)
# rest of the code

最新更新