[Python-de] os.system unter windows2000, problem

Rene Liebscher R.Liebscher at gmx.de
Tue Jul 17 09:45:08 EDT 2001


CCF.Herzog at gmx.net wrote:
> 
> Hallo,
> ich kann nicht verstehen, warum ich folgendes Verhalten
> bekomme, d.h meiner Meinung nach müssten, alle drei
> Aufrufe von os.system funktionieren, tatsächlich tut aber nur der
> letzte:
> #---------------------------------------------------
> import os
> a = "C:\\test.htm"
> f = open(a, "w")
> f.close()
> b = "C:\\Kopie von test.htm"
> f = open(b, "w")
> f.close()
> 
> c = '"C:\\Programme\\Microsoft Office\\Office\\WINWORD.EXE" '
> x = c + '\"%s\"' % b
> y = c + '\"%s\"' % a
> z = c +  a
> 
> print x
> print y
> print z
> print os.system(x)
> print os.system(y)
> print os.system(z)
> #------------------------------------------------------
> Als Ausgabe von obigem erhalte ich:
> >>>
> "C:\Programme\Microsoft Office\Office\WINWORD.EXE" "C:\Kopie
> von test.htm"
> "C:\Programme\Microsoft Office\Office\WINWORD.EXE"
> "C:\test.htm"
> "C:\Programme\Microsoft Office\Office\WINWORD.EXE"
> C:\test.htm
> 1
> 1
> 0
> 
> Mit anderen Worten: nur der Aufruf os.system(z) funktioniert, die
> anderen nicht, obwohl sie auf der Befehlszeile in der DOS-Box
> valide Eingaben sind. (Es nützt übrigens auch nichts, bei
> "C:\\Kopie von test.htm" die Anführungszeichen im Aufruf
> wegzulassen, Word wird dann zwar gestartet, aber das Dokument
> nicht gefunden)
> Es geht anscheinend mit dem Aufruf von os.system nicht, zwei
> Strings mit Anführungszeichen zu verknüpfen. Die
> Anführungszeichen werden aber benötigt, um cmd.exe mitzuteilen,
> daß die blanks Bestandteil der Pfade und keine Trennzeichen sind.
> Mit os.popen() sieht es im übrigen, wenn ich recht sehe, genauso
> aus. Was mache ich da falsch?
> Für Hilfe wäre ich wirklich dankbar
> Christoph

Ich hatte mit folgendem Aufruf Erfolg:

os.spawnv(os.P_WAIT,
          'C:\\Programme\Microsoft Office\Office\winword.exe',
          ['"C:\\Programme\Microsoft Office\Office\winword.exe"',
           '"c:\\Kopie von test.txt"'])

Die Strings in argv also mit Anfuehrungszeichen und das aufzurufende
Programm ohne.

MfG
Rene Liebscher



More information about the Python-de mailing list