(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/