используя два аргумента, один из которых целое число в check_output

#python #arguments #args

Вопрос:

Здравствуйте, пожалуйста, чтобы скомпилировать программу, которую я использую, я использую в терминале команду:

 python3 dd.py cholesky.c --args "mat.mtx.txt 1400" --verbose --debug
 

я использую два аргумента, как вы можете видеть файл 494_bus.mtx.txt и 1400, но теперь мне нужно использовать его в python-скрипте с использованием check_output, чтобы использовать разные значения от 1400, поэтому я использую этот цикл

 for i in range(1400, 2500, 100):
        i = str(i)
        check = check_output(["python3", "dd-.py", "cholesky.c","--args", "494_bus.mtx.txt", i, "--verbose", "--debug"]).decode('ascii')
 

но это не сработало, и это возвращает сообщение:

     File "numit.py", line 8, in main
    check = check_output(["python3", "dd-fp2mp.py", "cg.c","--args", "494_bus.mtx.txt", i, "--verbose", "--debug"]).decode('ascii')
  File "/usr/lib/python3.8/subprocess.py", line 415, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['python3', 'dd-fp2mp.py', 'cg.c', '--args', '494_bus.mtx.txt', '1400', '--verbose', '--debug']' returned non-zero exit status 2.
 

пожалуйста, мне действительно нужна помощь.

Комментарии:

1. Есть сообщение об ошибке, вы его проверили? Поскольку мы не уверены, что делает выполняемый вами скрипт python, мы можем только догадываться, что 2 означает код возврата.

2. Запустите команду самостоятельно напрямую и посмотрите, какую ошибку она вызовет. python3 dd-fp2mp.py cg.c --args 494_bus.mtx.txt 1400 --verbose --debug

3. Есть разница между '--args', '494_bus.mtx.txt', '1400' и '--args', '494_bus.mtx.txt 1400' .

Ответ №1:

Вы передаете --args параметр не так, как:

 python3 dd.py cholesky.c --args "494_bus.mtx.txt 1400" --verbose --debug
 

"494_bus.mtx.txt 1400" должен быть один параметр, такой как:

 check = check_output(["python3", "dd.py", "cholesky.c","--args", f"494_bus.mtx.txt {i}", "--verbose", "--debug"]).decode('ascii')