如果name=main,预定义的python函数无法运行

2024-05-16 22:26:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个初学者程序员,我的目标是设计一个实用程序,可以接受短信命令,并运行在我的主pc上远程相应的功能。我使用了各种工具(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

我将在这里发布我的代码作为上下文(为了安全起见编辑了一些信息):

#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.

'''    

任何帮助都将不胜感激。请记住,我没有接受过计算机科学的正式教育,但我只是想在今年秋天开始计算机科学专业学习之前先把脚弄湿。我只做了3个月的编程。你知道吗

另外,如果这段代码中的任何东西可以做得更优雅,我会很乐意接受建议。你知道吗

-杰克


Tags: andtoimporttxtforremoteosmain
1条回答
网友
1楼 · 发布于 2024-05-16 22:26:19

logmein()内部移除main(),使其在全局范围内。您得到的错误是,当您从全局范围调用main时,它没有被定义。你知道吗

相关问题 更多 >