Problem mit os.spawnv

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.
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Problem mit os.spawnv

Beitragvon cime » Donnerstag 13. April 2006, 15:06

Hallo,

ich möchte unter Windows von einem Programm aus ein neues unabhänig von dem alten mit einem Parameter starten. Ich habe mal in os nachgeschaut und os.spawnv gefunden. Leider funktioniert es einfach nicht.

Code: Alles auswählen

import os

path='D:\\ordner1\\Editor.pyw'
file=u'D:\\ordner2\\wm-gruppenregeln.txt'
os.spawnv(os.P_NOWAIT,path,[file])


Wenn ich das ausführe, bekomme ich immer einen Error:

Code: Alles auswählen

Traceback (most recent call last):
  File "D:\bwinf\2.runde\nr1\losgehts.pyw", line 228, in new
    self.open()
  File "D:\bwinf\2.runde\nr1\losgehts.pyw", line 243, in open
    self.open_file(path)
  File "D:\bwinf\2.runde\nr1\losgehts.pyw", line 257, in open_file
    os.spawnv(os.P_WAIT,path,[file])
OSError: [Errno 8] Exec format error


Kann mir jemand sagen, was ich falsch gemacht habe, und vorallem, wie ich es behebe???

Danke schon einmal im voraus

mfg
cime
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 13. April 2006, 15:12

pyw ist eine Pythondatei, und keine EXE
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Beitragvon cime » Donnerstag 13. April 2006, 15:20

Joghurt hat geschrieben:pyw ist eine Pythondatei, und keine EXE


ich weiß, aber unter Windows wird doch normalerweise, wenn man kein exe angibt, das zugehörige Programm (also hier halt pythonw.exe) gestartet

Wüsste trotzdem jemand, wie ich das realisieren kann, ohne erst die pythonw.exe aufzurufen bzw. falls es so nicht geht, wie ich den Ort der pythonw.exe herausbekomme?????
Zuletzt geändert von cime am Donnerstag 13. April 2006, 15:25, insgesamt 1-mal geändert.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 13. April 2006, 15:25

Ich hätte ja eher os.startfile() genutzt, aber naja.

Und den Python-Pfad kriegst du so.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Beitragvon cime » Donnerstag 13. April 2006, 15:32

Leonidas hat geschrieben:Ich hätte ja eher os.startfile() genutzt, aber naja.


ich auch, aber da bekomme ich einen Fehler, dass er die Datei nicht finden kann ... aber vielleicht weiß ja jemand was falsch an ... ist (ich nämlich leider nicht):

Code: Alles auswählen

os.startfile("%s %s"%(path,file))


Leonidas hat geschrieben:Und den Python-Pfad kriegst du so.


Danke, wenn keiner etwas einfacheres weiß, mach ich es halt so
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 13. April 2006, 15:36

Ich würde auch, wie Leonidas gesagt hat, os.startfile(file) benutzen.

Code: Alles auswählen

from os import startfile
startfile(Programm, das gestartet werden soll)
mfg

Thomas :-)
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 13. April 2006, 15:40

Warum sollte das nicht gehen?

Code: Alles auswählen

from os import startfile
startfile('C:\\Windows\\system32\\regedt32.exe')
mfg



Thomas :-)
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Beitragvon cime » Donnerstag 13. April 2006, 15:55

Code: Alles auswählen

import os
path='D:\\ordner1\\Editor.pyw'
file=u'D:\\ordner2\\wm-gruppenregeln.txt'
os.startfile(path,file)

führt zu

Code: Alles auswählen

Traceback (most recent call last):
  File "D:\bwinf\2.runde\nr1\test.py", line 7, in ?
    os.startfile(path,file)
TypeError: startfile() takes exactly 1 argument (2 given)

----------------------------

Code: Alles auswählen

import os
path='D:\\ordner1\\Editor.pyw'
file=u'D:\\ordner2\\wm-gruppenregeln.txt'
os.startfile("%s %s"%(path,file))

führt zu

Code: Alles auswählen

Traceback (most recent call last):
  File "D:\bwinf\2.runde\nr1\test.py", line 8, in ?
    os.startfile("%s %s"%(path,file))
WindowsError: [Errno 2] Das System kann die angegebene Datei nicht finden: 'D:\\ordner1\\Editor.pyw D:\\ordner2\\wm-gruppenregeln.txt'


Daher weiß ich nicht, was ich sonst machen soll ....
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 13. April 2006, 16:00

Also ich versteh nicht ganz, wozu das Path in deinem Code gut sein soll, aber im ersten Code ist es so, das os.startfile nur 1 Argument annimmt und zwar den pfad und die Datei!Du übergibst ihm aber Pfad als 1 Argument und Das File als 1 Argument!

Auserdem willst du 2 Datein in deinem Code, öffnen, das versteh ich net ganz! :?

Was ist an meinem Code falsch, bzw was macht er nicht, was du willst?

Wenn du 2 Files starte willst, dann nimm einfach 2x os.startfile!
mfg



Thomas :-)
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Beitragvon cime » Donnerstag 13. April 2006, 16:05

Python Master 47 hat geschrieben:Also ich versteh nicht ganz, wozu das Path in deinem Code gut sein soll, aber im ersten Code ist es so, das os.startfile nur 1 Argument annimmt und zwar den pfad und die Datei!Du übergibst ihm aber Pfad als 1 Argument und Das File als 1 Argument!


ja, das habe ich auch mitbekommen, ich habe das auch nur hingeschrieben als Antwort auf

Python Master 47 hat geschrieben:Ich würde auch, wie Leonidas gesagt hat, os.startfile(file) benutzen.

Code: Alles auswählen

from os import startfile
startfile(Programm, das gestartet werden soll)


Python Master 47 hat geschrieben:Auserdem willst du 2 Datein in deinem Code, öffnen, das versteh ich net ganz! :?

Was ist an meinem Code falsch, bzw was macht er nicht, was du willst?

Wenn du 2 Files starte willst, dann nimm einfach 2x os.startfile!


Antwort:
cime hat geschrieben:ich möchte unter Windows von einem Programm aus ein neues unabhänig von dem alten mit einem Parameter starten.


path ist also das Programm und file der Parameter, den ich übergeben möchte (Entschuldigung, ich habe gedacht, dass ist offensichtlich, war wohl mal wieder mit meinen Gedanken voraus) ...

mfg
cime
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 13. April 2006, 16:08

Antwort:
cime hat geschrieben:ich möchte unter Windows von einem Programm aus ein neues unabhänig von dem alten mit einem Parameter starten.


Tut mir Leid, aber ich steh gerade voll auf dem Schlauch, kannst du mir das nochmal erklären, wenn ich dein Problem versteh kann ich dir auch helfen! :?
mfg



Thomas :-)
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Beitragvon cime » Donnerstag 13. April 2006, 16:11

Python Master 47 hat geschrieben:Antwort:
cime hat geschrieben:ich möchte unter Windows von einem Programm aus ein neues unabhänig von dem alten mit einem Parameter starten.


Tut mir Leid, aber ich steh gerade voll auf dem Schlauch, kannst du mir das nochmal erklären, wenn ich dein Problem versteh kann ich dir auch helfen! :?


ganz ausführlich:
Ich habe ein Programm in dem ich unter anderem txt-Dateien verarbeite. Falls eine solche txt-Datei aber nicht den korrekten Aufbau hat, kann der User sie in dem von mir extra dafür geschriebenen Editor bearbeiten.
Dafür muss ich aber den Editor aufrufen und ihm einen Parameter (den Namen, der Datei, die bearbeitet werden soll) übergeben.
Und genau diesen Teil versuche ich gerade irgendwie zu realisieren und komme aber nicht weiter.

mfg
cime
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 13. April 2006, 16:15

Achso ok jetzt hab ich es verstanden! :P

Wie wäre es mit:

Code: Alles auswählen

from os import startfile
startfile('C:\\blub.txt')


Also du startest also deine txt file, das bearbeitet werden soll, bei mir heißt es blub.txt!Diese datei wird dann automatisch mit dem Text Editor gestartet!
Bei mir ist die .txt datei direkt auf C:\, das kann bei dir wieder anders sein, je nachdem wo die .txt datei liegt, änderst du den Pfad!

Ist das das was du willst?
mfg



Thomas :-)
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Beitragvon cime » Donnerstag 13. April 2006, 16:22

Python Master 47 hat geschrieben:Achso ok jetzt hab ich es verstanden! :P

Wie wäre es mit:

Code: Alles auswählen

from os import startfile
startfile('C:\\blub.txt')


Also du startest also deine txt file, das bearbeitet werden soll, bei mir heißt es blub.txt!Diese datei wird dann automatisch mit dem Text Editor gestartet!
Bei mir ist die .txt datei direkt auf C:\, das kann bei dir wieder anders sein, je nachdem wo die .txt datei liegt, änderst du den Pfad!

Ist das das was du willst?


nein, das weiß ich auch, ich hätte die Datei gerne in meinem Editor geöffnet ... (da ich in diesem dann noch ein Paar spezielle Funktionen hinzufügen möchte, die genau für diese Arten von Dateien nützlich ist) ..

mfg
cime
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 13. April 2006, 16:26

Das geht schlecht, weil eine .txt Datei standardmäßig mit dem Texteditor geöffnet wird!Und wie du jetzt deinen Editor öffnen kannst und dem Editor dann sagst, das er diese Datei öffnet weiß ich nicht!

Das einzige was mir noch einfallen würde wäre folgendes:

Du gehst auf die .txt Datei und gehst dann auf öffnen mit, dann wählst du deinen Editor aus und setzt einen Hacken bei Dateityp immer mit dem ausgewählten Programm öffnen!
mfg



Thomas :-)

Wer ist online?

Mitglieder in diesem Forum: jan.b, sls