subprocess.call不能按预期方式工作

我有以下batch file(test.bat)

my.py < commands.txt 

my.py执行以下操作:

 import sys print sys.stdin.readlines() 

一切工作正常,如果我从命令行(从Windows 7中的cmd.exeshell)启动此batch file。

但是,如果我试图通过从python subprocess.call函数运行它不起作用。

我如何尝试从python运行它:

 import subprocess import os # Doesn't work ! rc = subprocess.call("test.bat", shell=True) print rc 

这是我得到的错误信息:

 >my.py 0<commands.txt Traceback (most recent call last): File "C:\Users\.....\my.py ", line 3, in <module> print sys.stdin.readlines() IOError: [Errno 9] Bad file descriptor 1 

我使用Python 2.7.2,但在2.7.5我得到相同的行为。

有任何想法吗?

Solutions Collecting From Web of "subprocess.call不能按预期方式工作"

它应该是:

 rc = subprocess.call(["cmd", "/c", "/path/to/test.bat"]) 

或者使用shell:

 rc = subprocess.call("cmd /c /path/to/test.bat", shell=True) 

这是否工作:

 from subprocess import * rc = Popen("test.bat", shell=True, stdout=PIPE, stderr=PIPE, stdin=PIPE) print rc.stdout.readline() print rc.stderr.readline() rc.stdout.close() rc.stdin.close() rc.stderr.close() 

我不确定你为什么提到:

 my.py < commands.txt 

输入与蝙蝠文件有什么关系? 如果是这样,你打电话给:

 python my.py 

它通过子进程打开batfile:

 batfile < commands.txt 

或者为什么是相关的?