В 64-разрядной системе с установленным 32-разрядным python 2.7 я пытаюсь сделать следующее:
import subprocess
p = subprocess.call('dir', shell=True)
print p
Но это дает мне:
Traceback (most recent call last):
File "test.py", line 2, in <module>
p = subprocess.call('dir', shell=True)
File "C:\Python27\lib\subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 709, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 957, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Если я в терминале...
dir
... он, конечно, печатает содержимое текущей папки.
Я попытался изменить параметр оболочки на shell = False.
Изменить: На самом деле я не могу вызывать любой исполняемый файл на пути с помощью subprocess.call()
. Оператор p = subprocess.call('dir', shell=True)
отлично работает на другой машине, и я думаю, что это связано.
Если я делаю
subprocess.call('PATH', shell=True)
то я получаю
Traceback (most recent call last):
File "test.py", line 4, in <module>
subprocess.call('PATH', shell=True)
File "C:\Python27\lib\subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 709, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 957, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Если я это сделаю:
import os
print os.curdir
то я получаю
.
Все вышесказанное выполняется в терминале, запущенном в режиме администратора.