How to detect if a file is executable on Windows?

Grant Edwards grant.b.edwards at
Tue Feb 19 13:31:14 EST 2019

On 2019-02-19, Chris Angelico <rosuav at> wrote:
> On Wed, Feb 20, 2019 at 5:05 AM Dennis Lee Bieber <wlfraed at> wrote:
>> On 19 Feb 2019 13:58:18 GMT, jureq <jureq at> declaimed the
>> following:
>> >> I could also use the 2 first bytes of a file and determine if the file
>> >> is a binary because on Windows, the executable files start with b'MZ'.
>> >
>> >Is .bat executable?
>>         Or any of the extensions on
> I guess you have to define the question better for Windows, since
> there's no single definition of "executable". If you mean "typing just
> the base name of this file at the shell will result in it being run",
> then PATHEXT is the correct answer. If you mean "this thing is
> actually inherently executable", then you probably want to check if it
> begins MZ, but that's not certain (COM files still seem to be
> supported, and they have no header whatsoever). If you mean
> "double-clicking this thing will run it", I think there are tools that
> allow you to do the registry lookup conveniently to see if something's
> associated.

FWIW, I've noticed that afer downloading a .exe under Linux and
scp'ing the file to a Windows machine, it wont run when double-clicked
until I fire up a Cygwin shell and do a

   chmod +x <whatever>.exe

[I assume there's native Windows point-and-grunt means for doing that
as well.]

So, in addition to the suffix and associations, there's some sort of
file-system meta-data that determines whether a file is "executable"
in some contexts.

Grant Edwards               grant.b.edwards        Yow! I'm having a
                                  at               quadrophonic sensation
                                of two winos alone in a
                                                   steel mill!

More information about the Python-list mailing list