try produziert syntax error

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Freitag 9. September 2005, 20:30

Hallo Leute

ich hab da ein saukomisches Problem:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF8 -*-

import sys
import os
import getopt
import smsutils
import pickle

def usage():
    print """
pyss [options]|recipients

[OPTIONS]
-v|--verbose   verbose mode (not supported)
-h|--help      shows this screen
-s|--setup     setup Pyss
-c|--change    change Pyss setup
-g|--group     manage groups
-p|--person    manage person

[Example]
pyss --help         Shows this screen
pyss                Send short message
pyss -s             pyss setup
"""
def send(data):    
    print "Recipients:"
    recipients = raw_input()
    recipient_list = recipients.split()
    print "Message:"
    message = raw_input()
    sms = smsutils.processsms(data, message, recipient_list)
    finalr = sms.getnumbers()
    finalm = sms.tokenizemessage()
    sms.sendsms(finalm, finalr)
    print "Success!"
    return recipient_list, message

def setup():
    print "Doing setup"
    print
    person = {}
    group = {}
    setupdata = {}
    if not os.path.exists("/home/william/.smssend"):
        os.mkdir("~/.smssend", 0644)
    out = 1
    while out: 
        d = raw_input("""Input your sendsms setup directory. (default = ~/.smssend)""")
        if d:
            if os.path.exists(d):
                out = 0
            else:
                print "Path does not exist. Shall I create:", d
                print "Default = yes"
                answer = raw_input()
                if not answer or answer == "y" or answer == "yes":
                    os.mkdir(d, mode="0644")
                    out = 0
                else:
                    pass
        else:
            d = "~/.smssend"
            out =  0
    setupdata.update({ "confighome" : d })        
    
    out = 1
    while out: 
        pf = raw_input("Input your provider file. (default = orange.sms)")
        ptpf = raw_input("Input path to your provider file. (default = ~/.smssend/)")
        if not pf and not ptpf:
            path = d + "/orange.sms"
            if os.path.exists(path):
                out = 0
                print "Provider file set to:", path
            else:
                print "Error! There is no providerfile! You have to get one for pyss and sendsms to work!"
        elif pf and not ptpf:
            path = d + "/" + pf
            if os.path.exists(path):
                out = 0
                print "Provider file set to:", path
            else:
                print "Error! There is no providerfile! You have to get one for pyss and sendsms to work!"
        elif not pf and ptpf:
            path = ptpf + "/orange.sms"
            if os.path.exists(path):
                out = 0
                print "Provider file set to:", path
            else:
                print "Error! There is no providerfile! You have to get one for pyss and sendsms to work!"
        else:
            path = ptpf + "/" + pf
            if os.path.exists(path):
                out = 0
                print "Provider file set to:", path
            else:
                print "Error! There is no providerfile! You have to get one for pyss and sendsms to work!"
    setupdata.update({ "provider" : path })
    
    out = 1
    while out: 
        pb = raw_input("If you have a phonebook-file (*.pb) please input path:")
        if pb and os.path.exists(pb):
            setupdata.update({ "pb" : pb })
            out = 0
        elif pb and not os.path.exists(pb):
            print "This file does not exist. Please retry or go on."
        else:
            out = 0
    sig = raw_input("Please input a signature (default = no signature:")
    if not sig:
        setupdata.update({ "sig" : "" })
    else:
        print "Set", sig, "as your signature"
        setupdata.update({ "sig" : sig })
    if setupdata.has_key("pb"):
        result = importpb(setupdata["pb"])
        person.update(result)
        del setupdata["pb"]
    else:
        pass
    
    datafilepath = d + "/" + "pyssdata.pik"
    datafile = open(datafilepath, "w")
    completedata = (person, group, setupdata, [])
    control = smsutils.manageaccount(completedata)
    print "This are your settings:"
    control.showentry(2)
    q = raw_input("Is this correct? (default = yes)")
    if not q or q == "yes" or q == "y":
        pass
    else:
        changes(completedata)
    pickle.dump(completedata, datafile)
    datafile.close()
    
def importpb(path):
    pb = open(path, "r")
    line = pb.readline()
    book = {}
    while line:
        couple = line.split(":")
        print "Set number", couple[1], "to person", couple[0]
        result = raw_input("Default = yes")
        if not result or result == "y" or result == "yes":
                book.update({ couple[0]:couple[1]})
        else:
            pass
        line = pb.readline()
    return book
        
def changes(data):
    print "These are your settings.:"
    control = smsutils.manageaccount(completedata)
    control.showentry(2)
    c = raw_input("Press [Enter] if they are okay or input the setting you want to change:")
    if not c:
        pass
    else:
        if data[2].has_key(c):
            print "Enter new value for", c
            new = raw_input()
            data[2].changeentry(c, new)
        else:
            print "This setting does not exist!"
            changes()

def managegroup(data):
    print "These are your groups"
    control = smsutils.manageaccount(data)
    control.showentry(1)
    c = raw_input("Press [Enter] if they are okay or input the group you want to change or input a new group name:")
    if not c:
        sys.exit()
    else:
        if data[1].has_key(c):
            print "Enter new value for", c
            new = raw_input()
            data[1].changeentry(c, new)
        else:
            print "Creating new group", c
            members = raw_input("Please input members of the group separated by a blank space:")
            memberlist = members.split()
            addentry(c, memberlist, 1)
    managegroup(data)
    
def manageperson(data):
    print "These are the persons in your phonebook:"
    control = smsutils.manageaccount(data)
    control.showentry(0)
    c = raw_input("Press [Enter] if they are okay or input the person you want to change:")
    if not c:
        sys.exit()
    else:
        if data[0].has_key(c):
            print "Enter new value for", c
            new = raw_input()
            data[0].changeentry(c, new)
        else:
            print "Creating new person", c
            number = raw_input("Please input number of the person:")
            addentry(c, number, 0)
    manageperson(data)
    
def verbose():
    print "Verbose mode not yet supported"
    
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "vhscgp", ["verbose", "help", "setup", "change", "group", "person"])
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    if opts:
        for o, a in opts:
            if o in ("-v", "--verbose"):
                verb = 1
            elif o in ("-h", "--help"):
                usage()
                sys.exit()
            elif o in ("-s", "--setup"):
                setup()
                sys.exit()
            elif o in ("-c", "--change"):
                change()
                sys.exit()
            elif o in ("-g", "--group"):
                managegroup()
                sys.exit()
            elif o in ("-p", "--person"):
                manageperson()
                sys.exit()
            else:
                print "Sending sms"
    else:
        try:
            pass
Wenn ich den Code ausführe, krieg ich einen Syntax error, der auf einer Zeile unterhalb der letzten Zeile passiert? Den Versuchen die ich gemacht habe nach, liegt es an der letzten try-Anweisung. Wenn ich die entferne, funktionerts...
Kann mir jemand sagen was das Problem sein könnte?
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Freitag 9. September 2005, 20:41

Hi!

Ein try ohne except oder finally fühlt sich eben sehr alleine :)

Gruß, mawe
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Freitag 9. September 2005, 22:14

Schon und gut, aber die Fehlermeldung dazu ist schon ein bisschen mager...

Danke trotzdem mawe
Antworten