netcfg可以在cmd中運行,但在python 的os.system函數中執行卻找不到該應用程序

(1)netcfg可以在cmd中運行,但在python 的os.system函數中執行卻找不到該應用程序

Python代碼:

import os

if __name__=="__main__":
    print("start...")
    os.system("netcfg")
    print("finished!!!")

運行Python代碼效果:


在cmd中直接運行netcfg效果:


可以看到在cmd中並沒有報找不到netcfg的錯誤,而且在C:/Windows/System32中也確實有netcfg.exe這個文件。

(2)將 C:/Windows/System32 中的netcfg.exe文件複製一份到 C:/Windows/SysWOW64 文件夾下

再運行上面的Python代碼,效果如下:


可以看到,(1)中的問題被解決了。。。。。。。。。。但,不知爲何。

更正:

後續測試發現,(2)中的解決方案僅僅是程序運行沒有報錯,其實是netcfg根本就沒有正常運行起來

安裝64位的python後(1)中的問題才被正常解決。

補充1:

後續測試又發現,使用32位的python訪問windows命令時,會被自動重定向到C:\Windows\SysWOW64文件夾中(32位的命令),如果在C:\Windows\SysWOW64文件夾中沒有找到相關的命令,就會報(1)中的錯誤。

如果想在32位的python中直接訪問C:\Windows\System32文件夾中64位的命令,則應該使用C:\Windows\SysNative這個虛擬路徑來訪問。

舉例:在32位的python中使用os.system      訪問 C:\Windows\System32\netcfg.exe  ----> 系統實際上會去訪問 C:\Windows\SysWOW64\netcfg.exe

                                                                      訪問 C:\Windows\SysNative\netcfg.exe ----> 系統實際上會去訪問 C:\Windows\System32\netcfg.exe

參考資料:

(1)https://stackoverflow.com/questions/5144402/nothing-returned-when-using-32-bit-python-os-popen-on-a-64-bit-windows-7-system

(2)http://leonax.net/p/2601/magic-of-sysnative-folder/



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章