Терминальная команда через python висит после открытия программы - PullRequest
1 голос
/ 06 октября 2019

Я запускаю программу с ее командой, используя python, но после выполнения команды скрипт застревает и продолжает работу только после закрытия открытого окна. Итак, если я сделаю что-то очень простое, как это:

    import os
    os.system('gedit')
    print('aaaaaaaaaaaaa')

Он не будет печататься, пока я не закрою текстовый редактор. То же самое происходит с subprocess.call

1 Ответ

0 голосов
/ 08 октября 2019

Я написал рабочий код, который делает то, что вы хотите.

Я протестировал его на RedHat 7 Linux, и он работал как положено.

Код:

import subprocess

proc = subprocess.Popen(["gedit"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()
print("STDOUT: {0} \nSTDERR: {1}".format(stdout, stderr))
print("After I closed Gedit")

Вывод:

>>> python3 test.py 
STDOUT: b'' 
STDERR: b'\n(gedit:683047): GVFS-RemoteVolumeMonitor-WARNING **: 08:20:31.346: remote volume monitor with dbus name org.gtk.vfs.GoaVolumeMonitor is not supported\n'
After I closed Gedit

ПРИМЕЧАНИЕ. Конечно, Gedit открылся, и когда я его закрыл, программа продолжила работу.

...