web-dev-qa-db-ja.com

引数を使用してbashからPythonスクリプトを呼び出す

次を使用して、bashスクリプトからpythonスクリプトを実行できることを知っています。

python python_script.py

しかし、bashスクリプトからpythonスクリプトに変数/引数を渡したい場合はどうでしょう。どうやってやるの?

基本的に、bashはファイル名を作成し、pythonがアップロードしますが、呼び出すときにbashからpythonにファイル名を送信する必要があります。

66
Jimmy

Bashスクリプトでpythonスクリプトを実行するには、ターミナル内で実行するのと同じコマンドを呼び出す必要があります。例えば

> python python_script.py var1 var2

python内でこれらの変数にアクセスするには、必要になります

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

つかいます

python python_script.py filename

Pythonスクリプト内

import sys
print sys.argv[1]
20
NPE

sys.argv の他に、スクリプトのオプションと引数の定義に役立つ argparse モジュールもご覧ください。

Argparseモジュールを使用すると、使いやすいコマンドラインインターフェイスを簡単に作成できます。

15
miku

埋め込みオプション:

pythonコードをbash関数でラップします。

#!/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

環境変数を使用して、埋め込みpythonスクリプトにデータを渡します。

#!/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

5
user77115

メッセージウィンドウを表示する小さなpythonルーチンを呼び出すbashスクリプトがあります。 killallを使用してpythonスクリプトを停止する必要があるため、上記の方法は使用できません。killallpythonを実行すると、他のpythonを取り出すことができます。 _私が使用するプログラム

pythonprog.py "$argument"#&はbashスクリプトに直接制御を返すため、バックティックの外側に配置する必要があります。このメッセージのプレビューでは、何らかの理由でコマンドの両側に「 `」が表示されていません。

pythonスクリプトがpython pythonprog.pyではなく名前でcliから実行される限り、これはスクリプト内で機能します。複数の引数が必要な場合は、引用符内の各引数の間にスペースを入れてください。

1

スクリプトで使用:

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

または

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

スクリプトは出力なしで実行されます。

0
burseaner