Dave Angel wrote:
tarun wrote:
Hello All,

I've a batch file to be  invoke using a python script. The batch file has
pause, and the time, I need to send some command to the batch file from my
scripts. I placed both, the batch file (test.bat) and the python script
(test.py) in the same folder. And executed 'test.py'

(Please find the source files and error below).

*I get the following error:*
Traceback (most recent call last):
  File "<string>", line 74, in run_nodebug
  File "D:\test.py", line 4, in <module>
    proc = subprocess.Popen(my_bat,stdin=subprocess.PIPE)
  File "C:\Python25\lib\subprocess.py", line 588, in __init__
    errread, errwrite) = self._get_handles(stdin, stdout, stderr)
  File "C:\Python25\lib\subprocess.py", line 717, in _get_handles
    c2pwrite = self._make_inheritable(c2pwrite)
  File "C:\Python25\lib\subprocess.py", line 746, in _make_inheritable
    DUPLICATE_SAME_ACCESS)
WindowsError: [Error 6] The handle is invalid

*Python Script:*
*test.py*
import subprocess,os
my_bat = os.getcwd()+'\\test.bat'
proc = subprocess.Popen(my_bat,stdin=subprocess.PIPE)
input = '\n'
proc.communicate(input)

*Batch File*
*test.bat*
echo "START'
pause
echo 'END'
Please help me with this issue.

Thanks In Advance,
Tarun

subprocess.Popen() is expecting the name of a program, which should normally have an extension of .exe You're handing it a .bat file, which is not executable. It only executes in the context of a command interpreter (shell), such as cmd.exe

You can probably do what you want by running "cmd.exe" and passing it "test.bat" as a parameter

Sounds reasonable, but isn't actually true. This works fine:

<code>
import subprocess

open ("t.bat", "w").write ("echo hello")
subprocess.Popen ("t.bat")

</code>

TJG
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to