установка переменной для вывода программы c аргументами командной строки в python - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь использовать скрипт на python, в котором переменная установлена ​​на выходной файл ac test test.c, который требует аргументов командной строки.Ниже моя программа на c:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

int main(int argc, char *argv[])
{
       int lat;
       lat=atoi(argv[1]);
       printf("-->%d\n",lat);
}

Программа на python:

  import subprocess

  for lat in range(80,-79,-1):
           cmd = '"./a.out" {}'.format(lat)
           print "cmd is ",cmd
           parm31=subprocess.call(cmd,shell=True)
           print "parm is ",parm31

Я собрал test.c, чтобы получить a.out.Моя цель - получить вывод при запуске программы на python с встроенной в нее программой c (test.c или a.out), чтобы получить вывод:

 parm is -->80
 parm is -->79
 parm is -->78
 ...
 parm is -->-77
 parm is -->-78

Я, к сожалению, не дохожу довывод, но другие значения для числовой составляющей переменной и некоторых других нежелательных выходных данных.Как настроить эту программу, чтобы получить правильный вывод?

1 Ответ

0 голосов
/ 22 июня 2019

Согласно [Python 2.Docs]: подпроцесс. вызов ( аргументы, *, stdin = нет, stdout = нет, stderr = нет, shell = False ) ( выделение принадлежит мне):

Запустите команду, описанную args .Дождитесь завершения команды, , затем верните атрибут returncode .

Чтобы все заработало:

  • Используйте check_output вместо
  • Составьте команду для переноса списка (не строки)
  • Не передавайте shell=True
import subprocess

for lat in range(80, -79, -1):
    cmd = ["\"./a.out\"", "{}".format(lat)]
    print "Command is ", " ".join(cmd)
    out = subprocess.check_output(cmd)
    print "Command output is ", out.strip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...