Python OSError: [Errno 2] Нет такого файла или каталога ERROR - PullRequest
0 голосов
/ 21 октября 2018

У меня проблемы с запуском команд ОС в Linux через python (что я делал много времени в прошлом)

Я пытаюсь запустить простую команду ОС, используя модуль subprocess:

def test_func():
    cmd = 'mkdir /tmp/test_dir'
    res = subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout.read()

И я получаю эту ошибку

Traceback (most recent call last):
  File "/Volumes/fiverr_dev/fiverr-bi/apps/apis/api_acq_bing_reports.py", line 92, in <module>
    acquisition_reports.test_func()
  File "/Volumes/fiverr_dev/fiverr-bi/apps/etls/acquisition_reports.py", line 177, in test_func
    res = subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout.read()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

Это внезапно начало происходить.Я имел дело с python venv s, возможно, это как-то повлияло на проблему.

Ошибка возникает для ЛЮБОЙ команды, которую я пытаюсь запустить на Linux ... Это кажется довольно общей проблемой.

Кто-нибудь имеет представление, что случилось?

1 Ответ

0 голосов
/ 21 октября 2018

Вы получаете сообщение об ошибке, поскольку python пытается выполнить следующее ниже.

(ins)-> cmd='mkdir /tmp/hello'
(ins)-> "$cmd"
-bash: mkdir /tmp/hello: No such file or directory

Используйте shlex.split (cmd) в питоне

In [13]: cmd = 'mkdir /tmp/hello'

In [14]: args = shlex.split(cmd)

In [15]: subprocess.Popen(args)
Out[15]: <subprocess.Popen at 0x10e1f74e0>
...