user713713
user713713

Reputation: 617

Python Subprocess not working on Windows 7

Can anyone explain what's happening here? Even built in cmd.exe commands aren't working:

Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:25:23) [MSC v.1600 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.call('dir')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python34\lib\subprocess.py", line 535, in call
    with Popen(*popenargs, **kwargs) as p:
  File "D:\Python34\lib\subprocess.py", line 848, in __init__
    restore_signals, start_new_session)
  File "D:\Python34\lib\subprocess.py", line 1104, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
>>>

Upvotes: 0

Views: 3078

Answers (1)

dano
dano

Reputation: 94871

To use 'dir', you have to pass shell=True:

>>> import subprocess
>>> subprocess.call('dir', shell=True)

You have to do this because dir is built into the shell itself, it's not a standalone console application. This is also mentioned in the subprocess.Popen documentation:

On Windows with shell=True, the COMSPEC environment variable specifies the default shell. The only time you need to specify shell=True on Windows is when the command you wish to execute is built into the shell (e.g. dir or copy). You do not need shell=True to run a batch file or console-based executable.

Upvotes: 6

Related Questions