2017-03-22 9 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) 
関連する問題