2017-08-01 289 views
0

我试图在终端中执行Python脚本。在Mac终端上运行Python脚本

在Python shell中运行,它做它应该做的。它将在没有错误的情况下运行,但在终端中执行时没有任何反应

一旦找出这个问题,会有一个更有用的方法让程序在终端中输入'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

那是整个脚本?与每个字符和**缩进**相同在您的文件? – jacoblaw

回答

0

您只声明一个类和方法。您需要实例化要调用的__init__函数的类。您可以在脚本底部添加以下内容(类别定义之外):

Sleep() 

还有其他一些问题。

  • 你叫self.sleepAide()没有time的说法,但它并不像你会需要它,因为你通过input
  • 收集它你不会在sleepAide定义通过self但尝试调用它,就好像它是一个实例方法

我做了以下几个变化以获得工作示例:

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可以提供帮助。