2

假设我有一些用 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'
4

1 回答 1

1

你可以继续前进——但你不应该。此代码不可读。相反,您应该反转 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
于 2019-10-05T17:35:36.293 回答