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)
은 잡히지 않지만 첫 번째 경우는 있습니까?
저는 그것이 중복되어 있음을 확신합니다. 두 코드 모두 제대로 작동합니다. 두 번째 것만이 더 간결합니다. 차이점은 실제로 하나의 테스트를 수행하고 다른 하나는 특성을 검사한다는 것입니다. 게다가 임의의 코드 실행에 취약 할 수 있으므로 첫 번째 코드는 사용하지 마십시오. –
'x'의 값을 신중하게 검사하지 않으면 첫 번째는 백도어처럼 보입니다. – chepner