我试过这样的事,但没有效果:
command = "cmd.exe"
proc = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE)
proc.stdin.write("dir c:\\")
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Python脚本:
log("Running command: " + str(cmd))
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, close_fds=close_fds)
Run Code Online (Sandbox Code Playgroud)
我在Windows上的相同python版本2.6.1上执行它,但在不同的VM上执行它。一个是Windows Server 2008 Enterprise,第二个是Windows Server Enterprise,我只在其中一个出现错误。
Windows Server Enterprise的日志:
Running command: C:\Program File\MyProgram\program.exe "parameters"
Error: 'C:\\Program' is not recognized as an internal or external command
Run Code Online (Sandbox Code Playgroud)
Windows Server 2008 Enterprise的日志:
Running command: C:\Program File\MyProgram\program.exe "parameters"
...
Run Code Online (Sandbox Code Playgroud)
该错误仅在一种环境下发生。我知道该路径应该转义,但是,如何有可能在subprocess.Popen没有空间的情况下处理该路径?
背景
我一直dir/s在批处理文件中使用该命令.但是,我无法使用python调用它.注意:我使用的是Python 2.7.3.
码
import subprocess
subprocess.call(["dir/s"])
Run Code Online (Sandbox Code Playgroud)
错误信息
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
subprocess.call(["dir/s"])
File "C:\Python27\lib\subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)
我试过改变报价但没有任何效果.
我该如何dir/s使用模块subprocess?
我尝试使用以下程序在Windows下包装cmd.exe但它不起作用,它似乎等待某些东西并且不显示任何内容.知道这里有什么问题吗?
import subprocess
process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None)
process.stdin.write("dir\r\n")
output = process.stdout.readlines()
print output
Run Code Online (Sandbox Code Playgroud)