Я бы хотел иметь такую же возможность сценария (щелчок правой кнопкой мыши) с файловым менеджером по умолчанию (nemo), который я использую для Nautilus с использованием классической Ubuntu (обе версии 20.04 .1).
-121 --- 87 2536- У меня есть исполняемый файл Fortran с именем chuck
в папке / home / debajyoti / chuckDir /
.
Программа chuck
do похожа на: он берет входной файл inputfile.txt
и выходной файл outputfile.txt
, вычисляет данные из inputfile.txt
и записывает выходные данные в файл outputfile.txt
.
Чтобы выполнить все эти вычисления, выполните следующие действия в Терминал Ubuntu :
~ $ cd chuckDir
~ / chuckDir $ ./chuck < inputfile.txt> outputfile.txt
ТЕПЕРЬ Я хочу запустить chuck
и сделать все это в скрипте Python
. Сценарий Python3
предназначен для переноса данных из outputfile.txt
в Plot. Теперь мой вопрос: как мне запустить chuck в самом Python3 Script
?
Обычно именно здесь подпроцесс
представляет собой очень полезную часть магии Python.
Предполагая, что входной файл называется inputfile.txt
, вы можете сделать это и вывести вывод stderr при ошибке и stdout при успешном запуске:
import subprocess as sp # I do this for shortening things later on
import shlex
# Run the program you want with the arguments you want split properly (thanks to shlex.split to making it so sp.run works right); store stdout and stderr results as well
chuck = sp.run(shlex.split('/full/path/to/chuck /full/path/to/inputfile.txt /full/path/for/outputfile.txt'), stdout=sp.PIPE, stderr=sp.PIPE)
if chuck.returncode != 0:
# If a program exits on an error or fail condition its exitcode is usually not 0
raise RuntimeError("Chuck did not run right!\n\n{}".format(chuck.stderr))
print(chuck.stdout)
Однако вам нужно действительно убедиться, что вы используете правильные пути для ваших файлов и исполняемого файла chuck
в нем, а также используйте полные пути к каталогам. Это базовый код, который вам понадобится для работы с ним и для выполнения chuck
с правильными путями. Кстати, вы должны использовать полные пути на диске, где это возможно.
По сути, дополнительные шаги по проверке кода возврата, вывода stderr и вывода stdout из программы являются этапами отладки. Если программа работает, как задумано, вы получите outputfile.txt, куда вы укажете.