预定义 python 函数无法 运行 with if name = main

predefined python function failing to run with if name = main

我是一名初级程序员,我的目标是设计一个可以接受短信命令的实用程序,并 运行 在我的主电脑上远程接收相应的功能。我正在使用各种工具来执行此操作(IFTTT、Dropbox、Twilio、Task Scheduler),但在此过程中我 运行 遇到了一些小麻烦。

最近,我尝试 运行 通过一个我命名为 'main()' 的函数来运行主要代码。但是,当我尝试调用该函数时,命令行会抛出错误:

Traceback (most recent call last):
File "C:\Python_Files\WIP\Check.py", line 104, in <module>
    main()
NameError: name 'main' is not defined

我将post我的代码放在此处作为上下文(为了安全起见编辑了一些信息):

#DESCRIPTION:
#Check if C:/Users/Thermaltake/Dropbox/Remote_Control contains a .txt file
#set count to corresponding integer
#delete file
#call function of corresponding integer
#reset count
#Set Task Scheduler to run this program every 5 minutes when idle.

import os
import time
import subprocess
import sys
import collections
import webbrowser
import logging
from twilio.rest import Client

#Twilio Account Info
account_sid = 'id'#not included for security
auth_token = 'token'#not included for security

client = Client(account_sid, auth_token)
myTwilioNumber = '+myTwilioNumber'#not included for security
myCellPhone = '+MyCellPhone'#not included for security



##FUNCTIONS##



#shutdown command
def shutdown():
    os.system('shutdown -s')

#restart command
def restart():
    os.system('shutdown -r')

#wake up computer and launch core programs
def wakeup():
    subprocess.Popen('C:/Users/Thermaltake/AppData/Roaming/Spotify/Spotify.exe')
    webbrowser.open('https://us-mg6.mail.yahoo.com/neo/launch')
    webbrowser.open('https://www.rescuetime.com/dashboard')

#Launch main coding applications
def code():
    webbrowser.open('http://somafm.com/player/#/now-playing/groovesalad')   
    subprocess.Popen('C:\Windows\system32\cmd.exe')
    subproces.Popen('C:\Python_Files\Sublime Text 3\sublime_text.exe')

#Launch Remote Desktop and automatically log in
def logmein():




    def main(): #main code
        x=0 #counter

        #checks for txt file in Remote_Control folder and assigns value to x
        if os.path.isfile('C:/Users/Thermaltake/Dropbox/Remote_Control/shutdown.txt')==True:
            x=1
        elif os.path.isfile('C:/Users/Thermaltake/Dropbox/Remote_Control/wakeup.txt')==True:
            x=2
        elif os.path.isfile('C:/Users/Thermaltake/Dropbox/Remote_Control/restart.txt')==True:
            x=3
        elif os.path.isfile('C:/Users/Thermaltake/Dropbox/Remote_Control/code.txt')==True:
            x=4
        else:
            print('No File Found')

        #Checks x value and executes function
        if x==1:
            os.remove('C:/Users/Thermaltake/Dropbox/Remote_Control/shutdown.txt') 
            shutdown()
            #print('Shutdown')#Placeholder for testing
            message = client.messages.create(body='Shutdown Initiated', from_=, to=)#not included for security
        elif x==2:
            os.remove('C:/Users/Thermaltake/Dropbox/Remote_Control/wakeup.txt')
            wakeup()
            #print ('Spotify') #Placeholder.  Define function to wake up PC and launch core programs
            message = client.messages.create(body='Waking Up', from_=, to=)#not included for security
        elif x==3:
            os.remove('C:/Users/Thermaltake/Dropbox/Remote_Control/restart.txt')
            restart()
            #print ('Restart') #Placeholder.
            message = client.messages.create(body='Restart Initiated', from_=, to=)#not included for security
        elif x==4:
            os.remove('C:/Users/Thermaltake/Dropbox/Remote_Control/code.txt')
            code()
            print('Happy Coding!')
            message = client.messages.create(body='Ready to Code!', from_=, to=)#not included for security
        else:
            print ('No command entered') 

        #End Sequence (prints value and resets counter)
        print (x)
        x=0

        os.system('pause') #Placeholder for testing

if __name__ == '__main__': #Runs main function
    main()

'''
TODO:
Twilio not yet working.  try different iterations of body and message.  try assigning it to its own function

subprocess failing to launch programs.  research alternatives.  SMTP is a possibility.

possibly need to add Enter keystroke to the end of shutdown() and restart().  maybe even log in to log off.

add 'send to-do list to phone' function.

cleanup indentation and remove unnecessary modules

add 'flvto' function

add 'remote in' function.


+ Version 1.1 7/6/17 +

WORKING:
subprocess.Popen('C:\Windows\system32\cmd.exe') 
webbrowser.open('http://somafm.com/player/#/now-playing/groovesalad') 
os.remove 
wakeup()

NOT WORKING:
subproces.Popen('C:\Python_Files\Sublime Text 3\sublime_text.exe')
Twilio return message
Task Scheduler: "Check_Dropbox on Lock"

BUGS:
IFTTT is buggy and sometimes unresponsive
Task Scheduler to check file is too slow.  Need something faster. (Possibly 'Watch 4 Folder')
shutdown() waits til logon to initialize.
restart() waits til logon to initialize.

'''    

如有任何帮助,我们将不胜感激。请记住,我没有接受过 CS 方面的正规教育,但我只是想在今年秋天开始学习 CS 专业之前尝试一下。我只编程了大约 3 个月。

另外,如果这段代码中有什么地方可以做得更优雅,我会很乐意接受建议。

-杰克

logmein() 中删除 main(),使其在全局范围内。你得到的错误是因为当你从全局范围调用 main 时它没有定义。