Seite 1 von 1

Befehle zum Arbeiten mit einer Datei

Verfasst: Sonntag 7. August 2016, 11:07
von Bfmg
Hallo zusammen,

ich habe da ein Problem:
ich habe eine Datei ("button.py") erstellt, welche eine weitere Datei ("remove.py") öffnen soll. Die Datei "remove.py" befindet sich in zwei Unterordnern, wodurch der Pfad zur Datei "/files/gp/remove.py" lauten müsste.
In der Datei "button.py" habe ich folgenden Befehl eingefügt:
os.system("./files/gp/remove.py")

Bei Ausführung der Datei "button.py" bekomme ich nun folgende Fehlermeldung in der Shell ausgegeben:
Der Befehl "." ist entweder falsch geschrieben oder konnte nicht gefunden werden.

Jetzt ist meine Frage, wo der Fehler liegt?!

Vielen Dank für die Hilfe!

Re: Befehle zum Arbeiten mit einer Datei

Verfasst: Sonntag 7. August 2016, 11:12
von BlackJack
@Bfmg: Der wird wahrscheinlich in dem tatsächlichen Quelltext liegen und ein Leerzeichen zu viel sein. Wobei man `os.system()` auch eher nicht verwenden sollte. Für das ausführen von externen Programmen ohne eine zusätzlich, unnötige Shell und die Probleme die sich dadurch ergeben können, gibt es das `subprocess` Modul.

Re: Befehle zum Arbeiten mit einer Datei

Verfasst: Sonntag 7. August 2016, 11:58
von Bfmg
@BlackJack: Vielen Dank für deine schnelle Rückmeldung.

Ich habe folgenden Quellcode in der Datei "button.py":

Code: Alles auswählen

[Codebox=pycon file=Unbenannt.txt]from Tkinter import *
import os

main=Tk()

def remove():
     os.system("./files/gp/remove.py")

b1=Button(main,text="Remove",command=remove)
b1.pack()

main.mainloop()[/Codebox]
Ein Leerzeichen konnte ich bis jetzt noch nicht finden, aber vielleicht übersehe ich auch etwas?!
Ich werde jetzt aber erst einmal deiner Idee mit dem Subprocess-Modul folgen, vielleicht habe ich damit mehr erfolg.

Ich habe den Quellcode jetzt ein wenig umgeschrieben, kannst du mir sagen ob der Aufruf über den Subprocess so korrekt ist? Ich bekomme jedenfalls immer eine Fehlermeldung:
Bild

So sieht der umgeschriebene Quellcode aus:

Code: Alles auswählen

[Codebox=pycon file=Unbenannt.txt]from Tkinter import *
import os
import subprocess

main=Tk()

def remove():
    file="./files/gp/remove.py"
    subprocess.Popen(file)
    
b1=Button(main,text='Remove',width=10,height=2,command=remove)
b1.pack()

main.mainloop()
[/Codebox]