For someone comes here having same error.
If you try list folder in system32
, but python tell you
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Windows\\System32\\OpenSSH\\'
That's cause by using python-32bit
. Installing 64-bit python will solve the problem.
waste one day to solve it
Best material to explain :)
https://mail.python.org/pipermail/python-win32/2012-March/012121.html
Python does not find System32
This is a very confusing point, so even though it's not directly
Python-related, I think it's still valuable to discuss it again.
As you discovered, Windows is helping you. For reasons that have never
been adequately explained to me (and believe me, I have asked people who
ought to know), on a 64-bit system, all of the 64-bit commands and DLLs
live in \Windows\System32. All of the 32-bit commands and DLLs live in
\Windows\SysWOW64. A 64-bit process gets to see both of those
directories as they really are.
But for a 32-bit process, the operating system "helpfully" rewrites your
paths. When you refer to \Windows\System32, the system helpfully
rewrites that reference to \Windows\SysWOW64. Microsoft calls it file
system redirection". I call it "file system stupidity".
Most of the time, that's OK. Most of the important commands are present
in both directories. A few (like nbtstat) are not, and that's a problem.
There are two solutions. One is to use 64-bit Python, which you have
said is a problem for you. The other is to use an API with the
tongue-twisting name Wow64DisableWow64FsRedirection. Here is my script:
import ctypes
k32 = ctypes.windll.kernel32
wow64 = ctypes.c_long( 0 )
k32.Wow64DisableWow64FsRedirection( ctypes.byref(wow64) )
# ... do stuff with real files ...
k32.Wow64RevertWow64FsRedirection( wow64 )