ich arbeite mit Ubuntu und dem Gnome-Dateimanager Nautilus. Im Verzeichnis ~/.gnome2/nautilus-scripts habe ich Scripte abgelegt, die ich aus Nautilus mit einem Rechtsklick auf ein Verzeichnis oder eine Datei aufrufen kann. (Kontextmenu Skripte) Die markierten Verzeichnisse/Dateien werden dabei als Argumente an das Script übergeben.
Nun möchte ich einige der Scripte bei der Ausführung überwachen und ggf. auch Eingaben dazu machen. Ein Terminal ist dafür völlig ausreichend um per print() etwas auszugeben oder per input() eine Abfrage zu machen. (Außerdem habe ich mich noch nicht mit GUIs beschäftigt. Das kommt erst noch.) Die Scripte starten aber nicht in einem Terminal sondern im Hintergrund.
Eine Lösung habe ich schon erarbeitet. Allerdings ist die nicht besonders schön.
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, sys, subprocess
arg = sys.argv
try:
arg1 = arg[1]
except:
arg1 = ""
# Def. einer Zeichenkette, die bestimmt nicht in den Argumenten vorkommt.
zsa = "__2.Script-Aufruf__"
if arg1 != zsa:
# Script wird zum 1. mal aufgerufen und startet sich im Terminal neu.
arg.insert(1,zsa)
# Es kann nur 1 Parameter zur Übergabe an gnome-terminal angegeben werden. Jeder Parameter muss mit " umschlossen werden, falls Leerzeichen darin enthalten sind.
arg = [ "\"" + "\" \"".join(arg) + "\"" ]
ter = ["gnome-terminal","-e"]
ter.extend(arg)
# Ich war mal in einer Endlosschleife gefange. Daher der folgende (jetzt auskommentierte) input() um das Script zu stoppen und mit ALT+F4 abbrechen zu können.
#x = input("drück was - irgendwas + enter ")
subprocess.call(ter)
else:
# Script wird zum 2. mal aufgerufen, befindet sich im Terminal und wird ausgeführt
arg.pop(1)
print(arg)
print("!" + os.getcwd())
print("++++++++++++++++++++++++++++++++++++++++++++++++++")
x = input(" zum beenden 'ENTER' drücken")
Viele Grüße