Ich bin ein Anfänger Programmierer und mein Ziel ist es, ein Dienstprogramm, das eine SMS-Befehl akzeptieren und eine entsprechende Funktion auf meinem Haupt-PC aus der Ferne ausführen können. Ich benutze eine Vielzahl von Tools, um dies zu tun (IFTTT, Dropbox, Twilio, Taskplaner), aber ich habe auf dem Weg in ein paar Schwierigkeiten gerannt.vordefinierte Python-Funktion fehlgeschlagen mit If Name = Main
Zuletzt habe ich versucht, den Hauptcode über eine Funktion auszuführen, die ich 'main()' genannt habe. Allerdings, wenn ich versuchen, die Funktion aufzurufen, wirft Befehlszeile einen Fehler:
Traceback (most recent call last):
File "C:\Python_Files\WIP\Check.py", line 104, in <module>
main()
NameError: name 'main' is not defined
ich meinen Code hier für Kontext wird Post (einige Informationen zur Sicherheit bearbeitet):
#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.
'''
Jede mögliche Hilfe enorm geschätzt werden. Denken Sie daran, ich habe keine formale Ausbildung in CS, aber ich versuche nur, meine Füße nass zu machen, bevor ich einen CS-Major in diesem Herbst anfange. Ich programmiere erst seit ca. 3 Monaten.
auch, wenn etwas in diesem Code kann eleganter getan werden, werde ich gerne beraten.
-Jake
Entfernen 'def logmein():'. Warum hast du das? Dann dedent 'main' also ist es im globalen Bereich. –
Ihre main() - Funktion ist innerhalb von logmein() definiert und somit außerhalb des Gültigkeitsbereichs des Hauptskriptes – jeremycg