Python Subprocess nbtstat“找不到文件”

时间:2018-05-22 21:31:26

标签: python subprocess

我很难获得在python中运行的nbtstat命令。每当我运行以下代码时,我都会收到错误“WindowsError:[错误2]系统无法找到指定的文件”。

print(subprocess.check_output(["nbtstat","-A",ipaddress]))

我也试过

print(subprocess.check_output(["C:\\Windows\\System32\\nbtstat.exe","-A",ipaddress]))

print(subprocess.check_output("nbtstat -A "+ipaddress))

并且这些版本都不起作用。

命令中是否有一些东西让它正常运行?

在Windows上运行python 2.7.11(无法更新)

1 个答案:

答案 0 :(得分:2)

您需要将命令编写为可执行文件的路径,并将\ System32用于\ sysnative。

此命令可以根据需要运行:

print(subprocess.check_output(["C:\\Windows\\sysnative\\nbtstat.exe","-A",ipaddress]))

This page describes the sysnative folder,但我会在这里给出简短(并且非常简单)的解释:

System32和Sysnative实际上是通过不同名称访问的同一文件夹,但如果使用该文件夹的程序是32位,则用于访问此文件夹的名称会更改文件夹中可用的选项。如果32位程序使用System32路径,则只有32位选项可用,并且所有64位程序都被隐藏。如果它改为使用Sysnative路径,则64位选项可用。

事实证明,nbtstat.exe实际上是一个64位程序,因此当32位脚本或其他程序试图通过System32文件夹打开它时,它会返回一个错误,指出该程序没有。存在。由于查找命令的默认路径是System32,如果您没有指定路径,那么它也会说该程序不存在。

因此,为了使32位程序使用64位命令可执行文件,必须显式指定可执行文件的路径,并且必须通过Sysnative路径而不是System32路径指定。< / p>