Python Texteditor

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

Hallo zusammen,
bin auf der Suche nach einem Texteditor, der in Python geschrieben ist und mit Python3 läuft.
Einen Standard-Texteditor für Python habe ich nicht gefunden.
Wenn es dies doch geben sollte, würde ich mich über eine kurze Info freuen.

Hier http://www.horst-tegtmann.de/index.php/ ... ditor.html habe ich mal beim Googeln, einen in Python geschriebenen Texteditor gefunden. Dieser nutzt aber wx, welches es aber für Python3 noch nicht gibt.

Hoffe, Ihr könnt mir da weiterhelfen, den richtigen Texteditor zu finden.

Grüße Nobuddy
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

eric 4 = python 2.X
eric 5 = python 3.X

http://eric-ide.python-projects.org

mfG
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Nobuddy hat geschrieben:Einen Standard-Texteditor für Python habe ich nicht gefunden.
Ein Standard-Texteditor für Python ist aber etwas ganz anderes als ein in Python3 geschriebener Texteditor :?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hey, Standard & mit Python3 lauffaehig: IDLE.

Was ist denn dein Ziel? Willst du einen Editor, denn du irgendwo einbetten kannst oder willst du ihn zum Python schreiben benutzen?
Rueck mit mehr Nebenbedingungen raus, sonst gibts nur madige Vorschlaege.
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

@Sr4l, Danke werde ich mir anschauen.
webspider hat geschrieben:
Nobuddy hat geschrieben:Einen Standard-Texteditor für Python habe ich nicht gefunden.
Ein Standard-Texteditor für Python ist aber etwas ganz anderes als ein in Python3 geschriebener Texteditor :?
Ok, und gibt es einen Standard-Texteditor für Python?

@cofi, suche einen Editor, den ich in Pythoncode einbinden und Textdateien editieren kann.
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

@Sr4l, suche nur einen Texteditor zum bearbeiten von Textdateien, keine IDE.
deets

Dann nimm doch einen, der dir gefaellt - warum muss der in Python geschrieben sein? Meiner ist Emacs, und den programmiert man in Lisp...
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

@deets, es ist überhaupt nicht das Problem, daß es keine Texteditoren gäbe ... evtl. habe ich mich etwas ungeschickt ausgedrückt.

Bisher verwende ich kate als Texteditor und verwende diesen auch bisher in meinem Code. Ich kann damit eine Textdatei aus dem Code heraus öffnen, um diese z.B. zu bearbeiten.

Der Grund meines Postes ist, daß kate bei Kubuntu z.B. der Standard-Texteditor ist, unter GNOME und XFCE gibt es wiederum einen anderen Standard-Texteditor.
Mein Code, um eine Textdatei mit kate zu öffnen:

Code: Alles auswählen

process = subprocess.Popen(['kate', 'textdatei.txt'])
Wie der Code aussehen müßte, um immer den richtigen Standard-Texteditor des jeweiligen Betriebssystems zu öffnen ... ?

Ich habe mir gedacht, daß es evtl. bei Python einen eigenen Texteditor von Haus aus gibt!?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@deets: Der laesst sich aber nicht gern einbinden ... du koenntest natuerlich dein Python Programm in Emacs einbinden ... :twisted:

@Nobuddy: Das sind keine Nebenbedingungen. Gibt es Einschraenkungen was das Toolkit angeht? Wie soll das Einbinden ablaufen, soll der Editor Kenntnis des Programms haben oder muss er einfach nur etwas editieren?

Im letzteren Fall kann die ganze Kommunikation ueber Dateien ablaufen und du musst ihn gar nicht in den Code einbetten. Also erzaehl etwas ueber das ganze Bild.
deets

cofi hat geschrieben:@deets: Der laesst sich aber nicht gern einbinden ... du koenntest natuerlich dein Python Programm in Emacs einbinden ... :twisted:
Das ist natuerlich glatt gelogen!

http://aloiroberto.wordpress.com/2010/0 ... and-emacs/

Denn wir wissen ja....

http://xkcd.com/378/
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

cofi hat geschrieben:@Nobuddy: Das sind keine Nebenbedingungen. Gibt es Einschraenkungen was das Toolkit angeht? Wie soll das Einbinden ablaufen, soll der Editor Kenntnis des Programms haben oder muss er einfach nur etwas editieren?

Im letzteren Fall kann die ganze Kommunikation ueber Dateien ablaufen und du musst ihn gar nicht in den Code einbetten. Also erzaehl etwas ueber das ganze Bild.
Beispiel: Ein Python-Programm durchsucht eine Textdatei nach einem bestimmten Begriff. Dieses Programm läuft selbst über die Konsole ab. Die Textdatei ist wie eine Liste mit Spalten aufgebaut.
Die Ergebnisse werden in der Konsole ausgegeben, dort kann ich betreffende Zeilen auswählen, welche ich z.B. bearbeiten möchte.
Nach Auswahl der zu bearbeitenden Zeilen, werden diese in eine neue Textdatei abgespeichert und dann mit einem Texteditor aufgerufen. Anschließend wird die Textdatei editiert und abgespeichert und die Ursprungsdatei aktualisiert.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Unter Linux verwenden manche Programme den Inhalt der Umgebungsvariablen um einen "Standardeditor" auszusuchen. Allerdings verstehe ich nicht warum du nicht einfach den Nutzer auswählen lassen kannst welchen Editor er mag.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

webspider hat geschrieben:Allerdings verstehe ich nicht warum du nicht einfach den Nutzer auswählen lassen kannst welchen Editor er mag.
Dazu musst du wissen welche Editoren der Nutzer installiert hat und einige Nutzer würden entscheiden dass er die Anwendung nicht mag.

OS X hat ``open``, Linux ``xdg-open`` und für Windows gibt es ``os.startfile``, alle öffnen Dateien mit der Standardanwendungen für Dateien des jeweiligen Typs.
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

DasIch hat geschrieben:
webspider hat geschrieben:Allerdings verstehe ich nicht warum du nicht einfach den Nutzer auswählen lassen kannst welchen Editor er mag.
Dazu musst du wissen welche Editoren der Nutzer installiert hat und einige Nutzer würden entscheiden dass er die Anwendung nicht mag.

OS X hat ``open``, Linux ``xdg-open`` und für Windows gibt es ``os.startfile``, alle öffnen Dateien mit der Standardanwendungen für Dateien des jeweiligen Typs.
Das ist ok, mit dem lässt sich was machen.
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

Habe das mal so umgesetzt:

Code: Alles auswählen

# Betriebssytem ermitteln und Befehl ausführen.
linux = sys.platform.startswith('lin')
windows = sys.platform.startswith('win')
osx = sys.platform.startswith('os')

if linux:
   standardedit = 'xdg-open'
elif windows:
   standardedit = 'os.startfile'
elif osx:
   standardedit = 'open'
else:
   print('Betriebssystem konnte nicht ermittelt werden.')
...

Code: Alles auswählen

process = subprocess.Popen([standardedit, chance])
Funktioniert prima, Danke! :wink:
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Nur nicht unter Windows. Den der Befehl lautet nicht "os.startfile" sondern der Funktionsaufruf.

Windows kennt aber den Befehl "start". Was nun besser ist kann ich nicht beurteilen.

Du hast die Variable standardedit genannt, geöffnet wird aber bei allen Varianten nicht der Standard Editor sondern das verknüpfte Programm zum Dateitype, d.h für HTML, XML und andere geht je nach Einstellung ein Browser oder ein Editor auf, oder etwas ganz anderes ;-)
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

Dann versuche ich es mal mit 'start' unter Windows, wenn ich ein Windows hätte ... :lol:

standardedit ist dann die falsche Bezeichnung für die Variable.
Besser wäre dann wohl was wie standardprog.
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

Habe daraus eine Funktion gemacht:

Code: Alles auswählen

def sysprog(filename):
    while True:
        # Betriebssytem ermitteln und Datei mit Standardprogramm öffnen.
        linux = sys.platform.startswith('lin')
        osx = sys.platform.startswith('os')
        windows = sys.platform.startswith('win')
        if linux:
            standardedit = 'xdg-open'
        elif osx:
            standardedit = 'open'
        elif windows:
            # standardedit = 'os.startfile'
            standardedit = 'start'
        else:
            print('Betriebssystem konnte nicht ermittelt werden.')
            break
        print('Datei %s wird mit dem Standardprogramm\nIhres Betriebsystem zum Editieren geöffnet!' % filename)
        process = subprocess.Popen([standardedit, filename])
        process.wait()
        break
Habe da noch eine Frage, wie kann ich eine wie oben geöffnete Datei mit dem Programm im Code wieder schließen?
Zuletzt geändert von Nobuddy am Freitag 17. August 2012, 10:13, insgesamt 4-mal geändert.
deets

Und das while True ist warum da? Wo du doch eh dauernd raus-breakst? Und warum printed eine solche Funktion eine Fehlermeldung anstatt eine Exception zu schmeissen, mit der du im umgebenden Code etwas anfangen kannst, statt einfach so zu tun, als ob alles ok gewesen waere?
Nobuddy
User
Beiträge: 1018
Registriert: Montag 30. Januar 2012, 16:38

deets hat geschrieben:Und das while True ist warum da? Wo du doch eh dauernd raus-breakst? Und warum printed eine solche Funktion eine Fehlermeldung anstatt eine Exception zu schmeissen, mit der du im umgebenden Code etwas anfangen kannst, statt einfach so zu tun, als ob alles ok gewesen waere?
Vielleicht habe ich da mal was falsch verstanden. Dachte es wäre immer gut, eine bestimmte Situation mit break zu beenden. Ist das falsch?
Das mit der Exception, ist eine gute Idee, werde das ändern.
Antworten