在 Windows Python3 中获取 .exe 文件的输出
Get the output of .exe file in Python3 on Windows
我一直在尝试获取以下命令 'manage-bde -status' 的输出,该命令在我的 windows cmd 命令提示符下运行良好,但是通过使用 python program.The 相同的命令在 python 子进程上不起作用,所以我不得不启动 manage-bde.exe 文件。
所以我的代码现在看起来像这样:
import os, platform, subprocess
################This part is only helpful for resolving 32 bit/64 bits issues##########
system_root = os.environ.get('SystemRoot', 'C:\Windows');
if (platform.architecture()[0] == '32bit' and platform.machine() == 'AMD64'):
system32='Sysnative'
else:
system32='System32'
manage_bde = os.path.join(system_root, system32, 'manage-bde.exe')
print(manage_bde)
#######################################################################################
stdout=subprocess.check_output(['start',manage_bde,'-status'])
print('Output:'+stdout)
我从 cmd 命令行启动它,Python 3.7.0。问题是我得到以下输出:
C:\WINDOWS\Sysnative\manage-bde.exe (this is from my print(manage_bde))
Traceback (most recent call last):
File "testCLI.py", line 13, in <module>
stdout=subprocess.check_output(['start',manage_bde,'-status'])
File "d:\Profiles\user\AppData\Local\Programs\Python\Python3\lib\subprocess.py", line 376, in check_output
**kwargs).stdout
File "d:\Profiles\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 453, in run
with Popen(*popenargs, **kwargs) as process:
File "d:\Profiles\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 756, in __init__
restore_signals, start_new_session)
File "d:\Profiles\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1155, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] Specified file was not found
我从 D: 驱动器启动它。有谁知道我错过了什么?
您可能需要运行具有管理员权限的脚本。
如果文件存在于文件系统中并且你得到FileNotFoundError: [WinError 2]
,你可以测试脚本是否有足够的权限来查看文件:
os.stat(manage_bde)
是的,我有足够的权限查看该文件:os.stat(manage_bde) 正在运行。
我已经像 eryksun 提议的那样更改了我的参数:
stdout = subprocess.getoutput([manage_bde, '-status'])
现在我可以启动程序了(但只有 shell 具有管理员权限)并获得输出,谢谢!
我一直在尝试获取以下命令 'manage-bde -status' 的输出,该命令在我的 windows cmd 命令提示符下运行良好,但是通过使用 python program.The 相同的命令在 python 子进程上不起作用,所以我不得不启动 manage-bde.exe 文件。
所以我的代码现在看起来像这样:
import os, platform, subprocess
################This part is only helpful for resolving 32 bit/64 bits issues##########
system_root = os.environ.get('SystemRoot', 'C:\Windows');
if (platform.architecture()[0] == '32bit' and platform.machine() == 'AMD64'):
system32='Sysnative'
else:
system32='System32'
manage_bde = os.path.join(system_root, system32, 'manage-bde.exe')
print(manage_bde)
#######################################################################################
stdout=subprocess.check_output(['start',manage_bde,'-status'])
print('Output:'+stdout)
我从 cmd 命令行启动它,Python 3.7.0。问题是我得到以下输出:
C:\WINDOWS\Sysnative\manage-bde.exe (this is from my print(manage_bde))
Traceback (most recent call last):
File "testCLI.py", line 13, in <module>
stdout=subprocess.check_output(['start',manage_bde,'-status'])
File "d:\Profiles\user\AppData\Local\Programs\Python\Python3\lib\subprocess.py", line 376, in check_output
**kwargs).stdout
File "d:\Profiles\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 453, in run
with Popen(*popenargs, **kwargs) as process:
File "d:\Profiles\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 756, in __init__
restore_signals, start_new_session)
File "d:\Profiles\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1155, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] Specified file was not found
我从 D: 驱动器启动它。有谁知道我错过了什么?
您可能需要运行具有管理员权限的脚本。
如果文件存在于文件系统中并且你得到FileNotFoundError: [WinError 2]
,你可以测试脚本是否有足够的权限来查看文件:
os.stat(manage_bde)
是的,我有足够的权限查看该文件:os.stat(manage_bde) 正在运行。 我已经像 eryksun 提议的那样更改了我的参数:
stdout = subprocess.getoutput([manage_bde, '-status'])
现在我可以启动程序了(但只有 shell 具有管理员权限)并获得输出,谢谢!