script - start python with arguments




Rufen Sie das Python-Skript von bash mit Argument auf (5)

Benutzen

python python_script.py filename

und in Ihrem Python-Skript

import sys
print sys.argv[1]

Ich weiß, dass ich ein Python-Skript von meinem Bash-Skript ausführen kann, indem Sie Folgendes verwenden:

python python_script.py

Aber wie wäre es, wenn ich aus meinem Bash-Skript eine Variable / ein Argument an mein Python-Skript übergeben wollte. Wie kann ich das machen?

Im Grunde wird bash einen Dateinamen ausarbeiten und dann wird er von Python hochgeladen, aber ich muss den Dateinamen von bash an python senden, wenn ich ihn anrufe.


Eingebettete Option:

Umschließen Sie Python-Code in eine Bash-Funktion.

#!/bin/bash

function current_datetime {
python - <<END
import datetime
print datetime.datetime.now()
END
}

# Call it
current_datetime

# Call it and capture the output
DT=$(current_datetime)
echo Current date and time: $DT

Verwenden Sie Umgebungsvariablen, um Daten an Ihr eingebettetes Python-Skript zu übergeben.

#!/bin/bash

function line {
PYTHON_ARG="$1" python - <<END
import os
line_len = int(os.environ['PYTHON_ARG'])
print '-' * line_len
END
}

# Do it one way
line 80

# Do it another way
echo $(line 80)

http://bhfsteve.blogspot.se/2014/07/embedding-python-in-bash-scripts.html


Um ein Python-Skript in einem Bash-Skript auszuführen, müssen Sie denselben Befehl aufrufen, den Sie in einem Terminal ausführen würden. Zum Beispiel

> python python_script.py var1 var2

Um auf diese Variablen in Python zuzugreifen, benötigen Sie diese

import sys
print sys.argv[0] # prints python_script.py
print sys.argv[1] # prints var1
print sys.argv[2] # prints var2

Verwenden Sie im Skript:

echo $(python python_script.py arg1 arg2) > /dev/null

oder

python python_script.py "string arg"  > /dev/null

Das Skript wird ohne Ausgabe ausgeführt.


sys.argv neben sys.argv auch das argparse Modul an, mit dessen Hilfe Sie Optionen und Argumente für Skripts definieren können.

Das argparse-Modul erleichtert das Schreiben benutzerfreundlicher Befehlszeilenschnittstellen.





debian