Seite 1 von 1

Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 10:15
von M.B
Hi!

Ich schreibe grad an nem kleinen Batch-u.Texteditor mit dem man dateien vom Dateityp *.batxt schreiben kann.
Diese sollen dann automatisch in *.bat umgewandelt und gleich ausgeführt werden. Wenn's klappt werde ich die
BATCH-Sprache noch zusätzlich um ein paar Befehle erweitern (Kombination Python-Batch).

Im Moment hänge ich aber daran, dass ich die *.batxt-Dateien gleich mit meinem Editor zu öffnen. Ich benutze dazu

Code: Alles auswählen

import sys
irgendwas=sys.argv[1]
Hier mein Skript:

Code: Alles auswählen

from tkinter import *
import sys

root=Tk()
def save():
    saver=text.get('1.0',END)
    root2=Tk()
    root2.title("Speichern...")
    eingabe=Entry(root2)
    eingabe.pack()
    try:
        eingabe.insert(END,sys.argv[1])
    except IndexError:
        pass
    def save2():
        savename=eingabe.get()+".batxt"
        file2=open(savename,"w")
        file2.write(saver)
        file2.close()
        root2.destroy()
    def break1():
        root2.destroy()
    cmdsave2=Button(root2, text="Speichern", command=save2)
    cmdsave2.pack()
    cmdbreak=Button(root2, text="Abbruch",command=break1)
    cmdbreak.pack()
    root2.mainloop()
root.title("Text-& Batcheditor")
text=Text(root)
text.pack()
try:
    file=open (sys.argv[1],"r")
    r=file.read()
    text.insert(END,r)
    file.close()
except IndexError:
    pass
cmdsave=Button(root,text="Speicheren",command=save)
cmdsave.pack()
root.mainloop()
Wenn ich das Skript normal starte läuft ja alles glatt.
Wenn ich aber parameter übergebe (anders geht's nicht zu testen wenn's noch keine *.exe ist) und nun unter anderem Namen abspeichern will kommt folgende Fehlermelung:

Code: Alles auswählen

Exception im Tkinter callback
Traceback (most recent call last):
   File "C:\Python31\lib\tkinter\__init__.py", line 1399, in __call__
      return self.func(*args)
   File "C:\Users\Martin\Desktop\Text-& Batcheditor.py", line 17, in save2
      file2=open(savename, "w")
IOError: [Errno 13] Permission denied: 'neuer_name.batxt'
Leider verstehe ich den genauen Grund dieser Fehlermeldung nicht. Kann mir jemand helfen?

Danke im Voraus M.B

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 10:23
von lutz.horn
Du hast nicht das Recht, die Datei zu speichern oder im Zielverzeichnis eine neue Datei anzulegen.

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 10:33
von M.B
Hab's verstanden aber wie kann ich das umgehen?

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 10:41
von .robert
Das ist wohl kein Problem mit Python sondern dem OS.

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 11:22
von M.B
Kann ich das dann irgendwie mit dem os-Modul lösen

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 11:27
von .robert
1) Hast du die Datei in die du schreiben willst vllt. schon von einem anderen Prozess geöffnet? Dann kommt nämlich der gleich Fehler

2) Wenn das OS sagt, du darfst da nicht schreiben, dann darfst du da nicht schreiben. Das hat nix mit Python zu tun, sondern mit den Rechten, die dein User hat.

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 15:01
von M.B
zu 1) guck ich mir mal genauer an
zu 2) ich bin auf meinem laptop admin

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 15:27
von DasIch
M.B hat geschrieben:zu 2) ich bin auf meinem laptop admin
Du hast trotzdem nicht alle notwendigen Rechte, kann unter Windows Vista/7 durchaus sein.

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 18:31
von M.B
aber das speichern funktioniert doch wenn ich direkt durch das programm starte! (keine parameter übergebe)

Re: Problem bei Batch-u. Texteditor

Verfasst: Donnerstag 24. Juni 2010, 18:59
von fhoech
Funktioniert hier bei mir. Schreib doch mal, wie Du Dein Skript mit und ohne Parameter startest.

Re: Problem bei Batch-u. Texteditor

Verfasst: Freitag 25. Juni 2010, 07:06
von M.B
Ich hab die Windows automatisch übergeben lassen.
Wenn man das Icon der Datei über das Icon des Progs drüberzieht passiert doch das gleiche wie wenn man das per cmd macht (Hab ich irgendwo gelesen),oder?
Und ohne params ganz einfach mit nem Doppelklick aufs Icon des progs.

Re: Problem bei Batch-u. Texteditor

Verfasst: Freitag 25. Juni 2010, 09:18
von Barabbas
Solche Details verrätst du dann mal ganz nebenbei? *g Lass dir doch einfach mal den Inhalt von "Eingabe" anzeigen - oder den Inhalt von sys.argv.

Ich gehe stark davon aus, dass da irgendwo Anführungsstriche drin sind. Und im Ernst: Sich ein Verhalten von Windows zu Nutze zu machen, das man selbst gar nicht genau kennt, finde ich schon ziemlich "problematisch" - besonders wenn man im Zusammenhang mit diesem Verhalten auf Fehler stößt und es im Forum nichtmal erwähnt.

Re: Problem bei Batch-u. Texteditor

Verfasst: Freitag 25. Juni 2010, 12:04
von fhoech
Ich glaube nicht, dass es an Anführungszeichen liegt, da wäre die Fehlermeldung ne andere.
Bau mal im Skript oben folgendes ein:

Code: Alles auswählen

import os
print(os.getcwd())

Re: Problem bei Batch-u. Texteditor

Verfasst: Freitag 25. Juni 2010, 14:22
von M.B
Danke!
Habs ausprobiert.
Wenn ich die Icon's übereinander ziehe springt Windows (oder Python?) automatisch ins Verzeichnis C:\Windows\system32.
Werd mal sehn wie ichs lösen kann - weiß ja jetzt den Fehler.