Просить внешнюю программу выполнить какую-то работу в скрипте Python в Ubuntu

1

Я хотел бы написать сценарий в python в ubuntu для выполнения нескольких серий задачи внешней программой (установленной в Ubuntu) несколько раз. Я могу запустить программу для одного файла с терминала, но я хотел бы автоматизировать ее, написав скрипт python, чтобы он мог читать файлы и выполнять задание. Как мне продолжить? заранее спасибо

Теги:
automation

2 ответа

0

Вы можете использовать системную команду или, лучше, команду подпроцесса для вызова вашего существующего приложения. Подпроцесс будет лучше для вашего случая использования, так как вы можете использовать stdout, stderr и получить код состояния для ошибок.

  • 0
    @natonomo Спасибо, я попробовал второй вариант, но получил следующую ошибку от: не могу прочитать / var / mail / os от: не могу прочитать / var / mail / subprocess ./integration.py: строка 5: программа: команда не найден ./integration.py: строка 6: папка: команда не найдена ./integration.py: строка 9: синтаксическая ошибка рядом с неожиданным токеном ('./integration.py: строка 9: files = [f для f в listdir ( папка) if f.endswith ('. tif')] 'У кого-нибудь есть идеи?
0

Используйте subprocess.run():

from subprocess import run

program = './program'
files = ['f1.txt', 'f2.txt', 'f3.txt']

if __name__ == '__main__':
    for filename in files:
        run([program, filename], shell=True)

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

from os import listdir
from subprocess import run

program = './program'
folder = 'folder/'

if __name__ == '__main__':
    files = [folder + f for f in listdir(folder) if f.endswith('.txt')]
    for filename in files:
        run([program, filename], shell=True)
  • 0
    @Dipankar Saha Я только что увидел ваш комментарий, и, поскольку на самом деле его не было в моем ответе, я не могу ответить там. Не могли бы вы предоставить отформатированную версию того, что вы использовали для получения новых ошибок и трассировки?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню