在下面的代码中,some_path
是一个与路径对应的字符串(可能是相对路径)
def editable(some_path):
"""Safely check whether a file is editable."""
delete = not os.path.exists(some_path)
try:
with open(some_path, 'ab'):
return True
except:
return False
finally:
# If the file didn't exist before, remove the created version
if delete:
try:
os.remove(some_path)
except:
pass
在open's docs中我们读到了:
如果无法打开文件,则会引发IOError
IOError
是唯一可能出现的错误(想到UnicodeError,还是OSError等)?
os.remove docs更加模糊:
如果path是目录,则引发OSError
那么如果文件正在使用,或受到保护或......
更新:shutil.move
怎么样?这似乎又引发了另一个shutil.Error(StandardError)
- 如果我正确读到the source