2017-08-01 23 views
0

端末でPythonスクリプトを実行しようとしています。Mac端末でPythonスクリプトを実行する

Pythonシェルで実行すると、それは想定されているとおりに動作します。それはエラーなく実行されますが、端末で実行されると何も起こりません。

これを見つけたら、プログラムに 'timeAide' & 'cancelSleep'文字列を端末に入力し、Macパスワードを入力させるより便利な方法があります。私は 'pyautogui'をインポートすることを計画しましたが、その部分はすべて完了しましたが、より良いものがあります。

#!/usr/bin/env python 

#sleepAide: user enters a number to put the computer to sleep 
#command for sleep: sudo systemsetup -setcomputersleep 60 
#command to cancel sleep: sudo systemsetup -setcomputersleep Never . 

#check python version in terminal: python --version 
#shebang line: '#!/usr/bin/python3.6' 
#type " 'nano' nameFile.py" in terminal to view code Ex: 'nano namefile.py' 

class Sleep(object): 
    def __init__(self): 
     self.sleepAide() 


    def sleepAide(time):     
     timeAide = 'sudo systemsetup -setcomputersleep ' 
     cancelSleep = 'sudo systemsetup -setcomputersleep Never' 
     time = int(input('In how many minutes would you like to sleep? ')) 
     if time > 0: 
      print(timeAide+' '+str(time)) 
     elif time == -1: 
      print(cancelSleep) 
+2

thatsスクリプト全体ですか?すべての文字と**インデント**はファイル内と同じですか? – jacoblaw

答えて

0

クラスとメソッドのみを宣言しています。 __init__関数を呼び出すには、クラスをインスタンス化する必要があります。これを行うには、クラス定義の外にスクリプトの最後に次の行を追加します。

Sleep() 

その他の問題がいくつかあります。あなたはinput

  • を経由して、それを収集するため、あなたはsleepAide定義でselfを渡すが、あるかのように、それを呼び出すようにしようとしないあなたがtime引数なしself.sleepAide()を呼び出すが、あなたがそれを必要とするようにそれが見えない

    • class Sleep(object): 
      
          def __init__(self): 
           self.sleepAide() 
      
          def sleepAide(self): 
           timeAide = 'sudo systemsetup -setcomputersleep ' 
           cancelSleep = 'sudo systemsetup -setcomputersleep Never' 
           time = int(input('In how many minutes would you like to sleep? ')) 
           if time > 0: 
            print(timeAide+' '+str(time)) 
           elif time == -1: 
            print(cancelSleep) 
      
      
      Sleep() 
      
      :それは私が働い例を取得するには、以下のカップルの変更を加えたインスタンスメソッド

    ました以下で

    ラン:

    $ python test.py 
    In how many minutes would you like to sleep? 10 
    sudo systemsetup -setcomputersleep 10 
    

    覚えておいて、このプログラムは、実際にシステムコマンドを実行していない、それだけでコンソールに出力します。コマンドを実行する場合はthis postが役に立ちます。

  • 関連する問題