2017-03-22 45 views
0

這是我不明白爲什麼不工作。 我有意設置sd_path,使其不存在,我期待它去到「不存在」異常,並退出代碼。但是,相反,它是不加任何錯誤,並且要 「一切都很好」python isfile這裏不工作

sd_path = "/home/rudra/foo/src/bar" 
try: 
    os.path.isfile(sd_path) 
    try: 
    os.access(sd_path, os.X_OK) 
    except: 
    print("Executable "+sd_path+" does not have suitable permission") 
    sys.exit(3) 
except: 
    print("Executable "+sd_path+" does not exists") 
    sys.exit(3) 
print("All Fine") 
+1

'os.path.isfile'不會引發異常。它返回布爾值。與'os.access'一樣。 –

+0

像@ŁukaszRogalski說的,'isfile'不會引發異常。你必須做'open(sd_path).close()'來獲得你需要的異常。 – Maciek

回答

3

使用if而不是try/except

sd_path = '/home/rudra/foo/src/bar' 

if os.path.isfile(sd_path): 
    if os.access(sd_path, os.X_OK): 
     print('All Fine') 
    else: 
     print('Executable', sd_path, 'does not have suitable permission') 
     sys.exit(3) 
else: 
    print('Executable', sd_path, 'does not exists') 
    sys.exit(3)