2017-01-20 8 views
-1

"Hi!"という単純な関数があります。私は、私の関数を呼び出すためにbashを使うのではなく、IDLEと言うことができます。しかし、bashはhi():関数から返された出力を表示したくないようです。bash出力をPython関数からの値(文字列)にする

#!/usr/bin/python 
    def hi(): 
     print 'Hi!' 

これは、 "こんにちは!" 印刷されない、私はPythonのhi.py(または./hi.py)を入力する場合はbashに

をしかし、私は内部のprint文が含まれていない場合関数の中で、ファイルhi.pyの中にただひとつとして'Hi!'ステートメント; bashはテキスト "Hi!"を出力します。それに応じて。 bashから、以下のコードが出力されます。こんにちは!

#!/usr/bin/python 
    print 'Hi!' 

bashから、関数hi()の文字列を出力するにはどうすればよいですか:hi.py?あなたはあなたの中にこれを実行する必要が

おかげ

+1

呼び出す必要が 0は主な機能ではありません。例えばpythonスクリプトの最後に 'hi()'を追加してください。 (これは頻繁に['if __name__ == '__main __':'](http://stackoverflow.com/questions/419163/what-does-if-name-main-do)スイートで行われます) – mgilson

+0

実際に(モジュールではなく)特定の関数を実行する場合は、[this](http://stackoverflow.com/questions/2119702/calling-a-python-function-from-bash-script)の質問を参照してください。しかし、あなたが望むように思えるのは、@ mgilsonが提案したものです。 –

+0

ありがとう、申し訳ありません私はタイトルを改めなければなりませんでした。 – Skillionaire

答えて

0

にあなたがそれをコードを渡していることを示すために「-c」フラグを受け付けます。私のファイル(hi.py)があるのであれば:

def hi(): 
     print 'Hi!' 

それから私は何ができる:

あなた出力

HI! 

理由をパイント

$ python -c "execfile('hi.py'); hi()" 

をPythonスクリプトを実行して、どこから開始するかを教えてください。手動で関数を呼び出す必要がありhi()

def hi(): 
     print 'Hi!' 
hi() 
+0

この解決方法は、元のhi.pyモジュールに変更を加える必要がないため、私には最も適しています。 – Skillionaire

+0

ありがとう@Aravind T A – Skillionaire

0

はhi.py:

def hi(): 
     print 'Hi!' 

    if __name__ == '__main__': 
     hi() 

そして、それはbashで動作します:

#!/bin/bash 
python hi.py 
+0

この解決策は私のために働いた。ありがとう。しかし、これはどのように機能しますか?だから私の理解は、__name__は変数(hi():関数の宣言していなくても)で、値 '__main__'(hi()の別の変数:関数または基本的にはすべての関数)と比較されます。それらが等しい場合、hi()関数が呼び出されます。 – Skillionaire

+0

これは主な方法のように動作します。 javaと同様に、関数を定義したら、その関数を呼び出すためにmain関数(_public static void main()_)を作成する必要があります。ここでは、コマンドラインで** python hi.py **を使用するときに、実行するコードに '\ _ \ _ main \ _ \ _'という名前のmainメソッドが含まれていることが前提です。したがって、 '\ _ \ _ main \ _ \ _'が検出されると、hi()関数が呼び出されます。 – Jiaxi

+0

__main__メソッドを見つけることを期待しているpythonについての明確化のためにありがとう。私はJavaシンタックスに慣れているので、アナロジーが家に帰った。私はHarvey Mudd CollegeのCS For Allオンラインブックを使って、Pythonプログラミングを学んでいました。https://www.cs.hmc.edu/csforall/index.htmlから入手できます。 PythonのOOPに向かう彼らの道は、Pythonの構文と意味論を教えるための様々なプログラミングパラダイム(すなわち関数型プログラミングと命令型)を通して読者を連れて行く。 OOPに達する前にしたがって、私はまだクラスに達していなかったし、__main__関数に慣れていませんでした。ありがとう。 – Skillionaire

0

あなたのPythonスクリプトで関数を呼び出しています?関数内のprintステートメントをアクティブにするには、関数を実際に呼び出す必要があります。たとえば、このファイルにpython test.pyを実行すると、「こんにちは!」と表示されます。

# Program named test.py 
def output(): 
    print('Hi!') 

output() # Calling the output function which will cause a print statement 

また、bashでこのpythonファイルを呼び出すこともできます。例えば、このスクリプトのためにbash call.shを呼び出すと "Hi!"あなたが特定のfunction.Theパイソンの実行可能ファイルを実行したいと仮定すると、コマンドライン

#!/bin/bash 
# Script to call python file 
python test.py 
+0

ありがとうございます。基本的には上記のように、モジュール自体の中から関数(名前output())を呼び出さなければならないので、Pythonはbashに文字列を出力させることができます。それはより明確になりました。あなたの投稿の上に@ Jiaxiは、hi():関数の変数__name__と '__main__'の値を照合して同様の解決法を提案しました。これらは本質的に同様の解決策ですが、彼はif条件を使用します。ありがとうございました。 – Skillionaire

関連する問題