Seite 1 von 1
Win32: Exe-Datei öffnen
Verfasst: Freitag 1. Oktober 2004, 18:39
von FiRe^
Hi,
wir kann ich unter Win32 eine Datei "sauber" öffnen? Ich habs schon mit dem os-Modul versucht:
Das Problem ist nur das die Eingabeforderung offen bleibt, und Python solange in ner Endlosschleife ist, bist ich die cmd.exe beendet hab :/
Gibts da keine bessere Möglichkeit? (Bei os.exec* wird Python ja beendet)
Verfasst: Freitag 1. Oktober 2004, 18:42
von Dookie
Hi FiRe^,
schau dir mal os.spawn in seinen Varianten an, damit kannst Du asychron laufende Prozesse erzeugen.
Gruß
Dookie
Verfasst: Freitag 1. Oktober 2004, 18:51
von FiRe^
Hi Dookie,
danke erstmal! Aber das funktioniert irgendwie nicht:
Code: Alles auswählen
import os
>>> os.spawnlp(os.P_NOWAIT, "C:\\test.exe")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in ?
os.spawnlp(os.P_NOWAIT, "C:\\test.exe")
AttributeError: 'module' object has no attribute 'spawnlp'
Verfasst: Freitag 1. Oktober 2004, 18:53
von CM
Hi
os.spanw wäre auch mein Vorschlag.
Hier ein Beispiel:
Code: Alles auswählen
#! /usr/local/bin/python
import time,os,sys
def start():
x = os.getloadavg()
count = 1
for i in range(3):
if x[0] <= 0.7:
print "starting job ..."
op = 'python test.py ' + str(count)
#os.popen(op)
os.spawnv(os.P_NOWAIT, sys.path, op)
count += 1
while 1:
x = os.getloadavg()
if x[0] <= 0.5:
print x
print "starting job ..."
os.popen('python test.py ' + str(count))
count += 1
time.sleep(0.1)
if __name__=="__main__": start()
Das ist nicht von mir ausschließlich von mir sondern nach Vorlage von Mark Lutz, aber das macht ja nichts. Du müßtest es halt windowsmäßig umgestalten. Ich benutze derlei Scripte wenn ich viele Jobs starten will und meine Kollegen nicht nerven möchte. (Deshalb die Sache mit dem getloadavg().) Je nach Anforderungen (Zahl der Prozessoren und dergleichen), müßtest Du das Skript noch anpassen.
Mit einem test.py, welches die Zahl, die als Argument mit übergeben wird als sys.argv einfängt, kannst Du schauen, wie das Skript funktioniert.
popen steht drin, weil, je nachdem, was Du genau willst, das eine andere Alternative sein kann. (Obwohl unter Windows wohl eher nicht, oder???)
Gruß,
Christian
Verfasst: Freitag 1. Oktober 2004, 19:02
von Dookie
die spawn-funktionen mit p sind nicht unter Windows verfügbar
Availability: Unix, Windows. spawnlp(), spawnlpe(), spawnvp() and spawnvpe() are not available on Windows. New in version 1.6.
Gruß
Dookie
Verfasst: Samstag 2. Oktober 2004, 10:05
von FiRe^
Das hab ich ganz überlesen
Danke vielmals!!