ausführen von python-Skript mit der Funktion von der Kommandozeile, Linux
Habe ich meine python-Datei namens convertImage.py und in der Datei habe ich ein script, das konvertiert ein Bild nach meinem Geschmack, die gesamte Konvertierung von Skript innerhalb einer Funktion aufgerufen konvertieredatei(fileName)
Nun mein problem ist ich benötigen zur Ausführung des python-Skripts aus der linux-Kommandozeile, indem Sie die konvertieredatei(fileName) Funktion zusammen mit ihm.
Beispiel:
linux user$: python convertImage.py convertFile(fileName)
Sollte dies führen Sie das python-Skript übergeben wird, die entsprechende Funktion.
Beispiel:
def convertFile(fileName):
import os, sys
import Image
import string
splitName = string.split(fileName, "_")
endName = splitName[2]
splitTwo = string.split(endName, ".")
userFolder = splitTwo[0]
imageFile = "/var/www/uploads/tmp/"+fileName
...rest of the script...
return
Was ist der richtige Weg, der zum ausführen dieses python-Skript und ordnungsgemäß übergeben Sie die Datei dem Namen der Funktion aus der liunx-Befehlszeile?
Danke im erweiterten
sys.argv
Liste und wählen Sie die richtige Aktion. Überprüfen Sie argparse
ModulWie erwähnt von S. Lott,
<program> <subcommand> <command arguments>
ist eine sehr häufige Stil. Es ist am besten für die Nutzer haben command-Namen, nicht die Kenntnis der internen Umsetzung. Und mit Klammern (die verlangen, dass die Flucht in die bash), als ein erforderlicher Teil Ihrer syntax ist nur meine.Die Klammern waren nur als Beispiel Gründe, aber ich Schätze all die Hilfe, und habe es um die Arbeit mit sys.argv
sys.argv
ist -- in der Regel -- eine schlechte Wahl. Beachten Sie, dass die Antworten alle ausdrücklich empfohlen, dies zu vermeiden.InformationsquelleAutor knittledan | 2011-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese
Dies funktionieren wird. Aber es ist wahnsinnig gefährlich.
Sie wirklich brauchen, um darüber nachzudenken, was Ihr Befehlszeilen-syntax ist. Und Sie brauchen, um darüber nachzudenken, warum Sie, brechen den etablierten Linux-standards für die Angabe von Argumenten zu einem Programm.
Zum Beispiel, sollten Sie erwägen, das entfernen der unbrauchbar
()
's in deinem Beispiel. Machen Sie dies, statt.Dann können Sie-mit wenig Arbeit -
argparse
man den Befehl ("konvertieredatei") und die Argumente ("Dateiname") und die Arbeit in den standard-Linux-Kommandozeilen-syntax.Was ist der Zweck der function_map dict hier? Warum müssen es zwei Tasten für den Befehl?
InformationsquelleAutor S.Lott
Schnelle und schmutzige Art und Weise:
und dann in convertImage.py
Einen anspruchsvollen Ansatz verwenden würde, argparse (für 2.7 oder 3.2+) oder optparse.
Danke, aktualisiert.
InformationsquelleAutor Ethan Furman
Erstellen Sie eine top-level ausführbare Teil des Skripts Parsen Kommandozeilen-argument(s) und dann geben Sie auf Ihre Funktion in einem Aufruf, etwa so:
Dann aus einer shell,
verlangt das eine hashbang?
InformationsquelleAutor Santa