web-dev-qa-db-ja.com

シェルスクリプト:シェルスクリプト内からpythonプログラムを実行します

私は答えをグーグルで試しましたが、運はありませんでした。

動作中のスーパーコンピューターサーバーを使用する必要がありますが、Pythonスクリプトを実行するには、シェルスクリプトを介して実行する必要があります。

たとえば、job.shpython_script.pyを実行させたい

どうすればこれを達成できますか?

93
Harpal

Python実行可能ファイルがPATH環境変数にあることを確認してから、スクリプトを追加してください

python path/to/the/python_script.py

詳細:

  • ファイルjob.shに、これを置きます
#!/bin/sh
python python_script.py
  • このコマンドを実行して、スクリプトを実行可能にします:chmod u+x job.sh
  • 実行:./job.sh
140

方法1-シェルスクリプトを作成します。

Pythonファイルhello.pyがあるとします。これには、job.shという名前のファイルを作成します。

#!/bin/bash
python hello.py

を使用して実行可能にする

$ chmod +x job.sh

それを実行します

$ ./job.sh

方法2(より良い)-Python自体をシェルから実行する:

スクリプトhello.pyを変更し、これを最初の行として追加します

#!/usr/bin/env python

を使用して実行可能にする

$ chmod +x hello.py

それを実行します

$ ./hello.py
90
João Víctor

私見、書く

python /path/to/script.py

特に最近では、非常に間違っています。どのpython? python2.6? 2.7? 3.0? 3.1?ほとんどの場合、pythonファイルのShebangタグでpythonバージョンを指定する必要があります。使用することをお勧めします

#!/ usr/bin/env python2#またはpython2.6またはpython3またはpython3.1

そのような場合、スクリプトを実行可能にして直接呼び出すことをお勧めします。

#!/ bin/bash 
 
/path/to/script.py 

これにより、必要なpythonのバージョンは1つのファイルにのみ書き込まれます。最近のほとんどのシステムではpython2とpython3が使用されており、ほとんどの人はpythonを指すのに対して、シンボリックリンクpythonpython2

9
Enrico Carlesso

これは私に最適です:スクリプトの先頭にこれを追加してください:

#!c:/Python27/python.exe

(C:\ Python27\python.exeは、私のマシン上のpython.exeへのパスです)次に、次の方法でスクリプトを実行します:

chmod +x script-name.py && script-name.py
3
peterb

あなたはpython scriptname.pyとしてそれを呼び出すことができるはずです

例えば

# !/bin/bash

python /home/user/scriptname.py 

また、スクリプトに実行権限があることを確認してください

chmod u + x scriptname.pyを使用して実行可能にすることができます

編集:それにbeatられた:-p

3
Shpongle

次のプログラムをprint.pyとして保存します。

#!/usr/bin/python3
print('Hello World')

次に、端末タイプで:

chmod +x print.py
./print.py
2
Nishant Ingle

これは私のために働く:

  1. 新しいシェルファイルジョブを作成します。たとえば、touch job.shとコマンドを追加してpythonスクリプトを実行します(コマンドライン引数をそのpythonに追加することもできます。通常、コマンドライン引数を事前に定義します)。

    chmod +x job.sh

  2. job.shの中に、次のpyファイルを追加します。

    python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file.py"

    python_file1.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file1.py"

Done with python_file.py

Done with python_file1.py

私は通常、事前に定義された異なる引数で複数のpythonファイルを実行する必要がある場合に使用します。

注:ここで何が起こっているかについて簡単に説明します。

python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "completed with python_file.py" . 

  • ここで、シェルスクリプトはファイルpython_file.pyを実行し、実行時に複数のコマンドラインargumentsをpythonファイルに追加します。
  • これは必ずしもコマンドライン引数を渡す必要があることを意味しません。
  • 次のように使用できます:python python_file.py、プレーンでシンプル。次に、>>は、この.pyファイルの出力をtestpy-output.txtファイルに出力して保存します。
  • &&は、上記が正常に実行された後にのみ実行される論理演算子であり、オプションとしてecho "python_file.pyで完了"がcli/terminalにエコーされます。実行時に。
2
geekidharsh

私はこれを使用し、それはうまく動作します

#/bin/bash
/usr/bin/python python python_script.py
1
Max Hay

他の投稿がすべてを言っているので(そして、私は次を探している間、この投稿につまずいた)。
これは、別のpythonスクリプトからpythonスクリプトを実行する方法です。

Python 2:

execfile("somefile.py", global_vars, local_vars)

Python 3:

with open("somefile.py") as f:
    code = compile(f.read(), "somefile.py", 'exec')
    exec(code, global_vars, local_vars)

他のsys.argvを提供することで引数を提供できます

0
dCSeven