本文主要是介绍ipython无法使用nbtstat的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:python2.7(32bit), win8.1,ipython2.4.1
很明显,在ipython中运行nbtstat命令时,解释器无法正常执行命令,而在dos下面却可以正常执行,通过google,找到了答案,
https://mail.python.org/pipermail/python-win32/2012-March/012121.html
le dahut wrote: > Using explorer I've found "nbtstat.exe" in C:\Windows\System32. > > In a MSDOS prompt : > dir C:\Windows\System32\nbtstat.exe > finds the file. > > In a python prompt : > os.system('dir C:\\Windows\\System32\\nbtstat.exe') > returns "File not found". > > It seems that : > * in MSDOS prompt C:\Ẁindows\System32 and C:\Ẁindows\SysWOW64 are two > separate dirs with different content > * in a python prompt C:\Ẁindows\System32 = C:\Ẁindows\SysWOW64 (same > content) And you are exactly right.> Any idea ? 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 ctypesk32 = ctypes.windll.kernel32wow64 = ctypes.c_long( 0 )k32.Wow64DisableWow64FsRedirection( ctypes.byref(wow64) )# ... do stuff with real files ...k32.Wow64RevertWow64FsRedirection( wow64 )
这个discuss也给出了解决方法:
1.安装64位的python, 这个办法不怎么好,因为很多程序都是基于32位的,为了这个功能更改到64bit确实没有必要
2.使用一个类似绕口令的api,经过测试,这个可以满足使用要求.解决问题.
这篇关于ipython无法使用nbtstat的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!