Re: os.system

06/03/2008 - 01:30 von Volker Grabsch | Report spam
Thomas Guettler <hv@tbz-pariv.de> schrieb:

Außerdem sollte man, falls es geht lieber das Modul subprocess
verwenden, weil dann nicht unnötigerweise eine Shell gestartet wird.
Das ist auch einiges sicherer. Beispiel:

myfile="abc; rm -rf /"
os.popen('ls -l %s' % myfile)

Das kann mit subprocess nicht so leicht passieren.



Autsch! Ja, solcher Code gehört verboten.

Vielleicht sollte man mal einen PEP starten, der os.popen()
und Konsorten endgültig ausrottet, oder zumindest mit einer
fetten "Deprecated"-Warnung kommt.

Okay, das Modul subprocess basiert intern auf diesen os.*-
Routinen, aber das ist ja kein ernsthaftes Problem.


Gruß,

Volker

"Wenn du der Meinung bist, der andere sei ein Depp, dann überlass das
Antworten denjenigen, die nicht dieser Meinung sind."

 

Lesen sie die antworten

#1 Gerold Penz
06/03/2008 - 18:27 | Warnen spam
Volker Grabsch schrieb:
myfile="abc; rm -rf /"
os.popen('ls -l %s' % myfile)


Vielleicht sollte man mal einen PEP starten, der os.popen()
und Konsorten endgültig ausrottet, oder zumindest mit einer
fetten "Deprecated"-Warnung kommt.



Hallo Volker!

Das ist wie: den CD-Brenner verbieten, nur weil man damit auch illegale
Kopien machen könnte.

Nur weil etwas damit möglich ist was in manchen Fàllen nicht ideal ist,
muss man doch kein Verbot-Schild aufstellen. Es genügt, wenn man in den
Tutorials darauf hinweist.

``os.popen`` ist in vielen Fàllen einfacher und schneller zu verwenden
als ``subprocess`` es je sein kann.

mfg
Gerold
:-)

________________________________________________________________________
Gerold Penz - bcom - Programmierung
http://halvar.at | http://sw3.at
Wissen hat eine wunderbare Eigenschaft:
Es verdoppelt sich, wenn man es teilt.

Ähnliche fragen