Наутилусоподобные сценарии с ubuntu budgie?

Я бы хотел иметь такую ​​же возможность сценария (щелчок правой кнопкой мыши) с файловым менеджером по умолчанию (nemo), который я использую для Nautilus с использованием классической Ubuntu (обе версии 20.04 .1).

-121 --- 87 2536- Как запустить исполняемый файл Fortran, который обычно запускается в терминале Ubuntu, в сценарии Python-3? У меня есть исполняемый файл Fortran с именем chuck в папке / home / debajyoti / chuckDir /. Программа chuck do похожа на входной файл inputfile.txt и выходной файл outputfile.txt и ...

У меня есть исполняемый файл 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 ?

0
задан 7 November 2020 в 18:55

1 ответ

Обычно именно здесь подпроцесс представляет собой очень полезную часть магии 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, куда вы укажете.

0
ответ дан 7 November 2020 в 16:01

Другие вопросы по тегам:

Похожие вопросы: