is_exec = lambda x: subprocess.call("type " + x, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0 and (os.path.isfile(x) and os.access(x, os.X_OK))
我碰到過這段代碼,它工作正常,但它是多餘的嗎?Python:檢查可執行文件
Isnt is_exec = lambda x: os.access(x, os.X_OK)
足夠嗎?
問:有沒有is_exec = lambda x: os.access(x, os.X_OK)
沒有捕獲但第一個呢?
我很確定它是多餘的。這兩段代碼都可以正常工作。只有第二個更簡潔。不同之處在於其中一個實際進行測試,另一個檢查屬性。此外,無論如何避免第一個,因爲它可能容易受到任意代碼執行。 – 2014-10-28 18:01:45
如果你沒有仔細審查'x'的值,第一個看起來像後門。 – chepner 2014-10-28 18:03:41