Seite 1 von 1
					
				`SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 13:08
				von hexflame
				Ich habe ein Modul für ein Spiel geschrieben welches eine Ebene in einer Welt 'generieren' soll. Aber beim importieren kommt ein `SyntaxError` in Zeile 13 aber ich habe keine Ahnung was da falsch ist. Sieht selbst.
Code: Alles auswählen
from random import choice
from json import dump
def pattern(layer, username)
        room = int(coice('123456'))
        item = int(choice('123456'))
        if room % 3 == 0:
                monster = room / 3
        elif room % 2 == 0:
                monster = room / 2
        else:
                monster = int(choice('1234'))
        file = open ('/home/' + username + '/.local/share/save/pattern.file', 'w') # Hier soll der Fehler sein
        dump({'room' : room, 'item' : item, 'monster' : monster}, file)
        file.close()
      
 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 13:58
				von Sirius3
				@hexflame: in Zeile 4 ist bereits ein SyntaxFehler. In Zeile 13 kann ich keinen sehen.
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 14:37
				von hexflame
				Sirius3 hat geschrieben:@hexflame: in Zeile 4 ist bereits ein SyntaxFehler. In Zeile 13 kann ich keinen sehen.
Ups ist mir woll beim abschreiben passiert.Dennoch gibt er bei mir an, dass das
 
Code: Alles auswählen
file = open("/home/" + username + "/.local/share/save/pattern.file","w")
ein `SyntaxError` sei sobald ich es importieren will.
 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 14:40
				von __deets__
				Hoer mal bitte auf, Dinge abzuschreiben - das fuehrt, wie du schon selbst gemerkt hast, man Transkriptionsfehler macht.
Und bitte poste deine genaue Fehlermeldung. So sieht es naemlich an sich ok aus, da muss also etwas anderes im Original sein.
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 14:49
				von hexflame
				Hier ist die Fehlermeldung
Code: Alles auswählen
    file = open('/home/' + username + '/.local/share/save/pattern.file', 'w')
       ^
SyntaxError: invalid syntax
 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 15:02
				von Sirius3
				@hexflame: das bedeutet, dass in der Zeile davor etwas nicht stimmt, z.B. Klammer vergessen.
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 15:32
				von hexflame
				Sirius3 hat geschrieben:@hexflame: das bedeutet, dass in der Zeile davor etwas nicht stimmt, z.B. Klammer vergessen.
Ich finde keinen Fehler.
Apropo, hier ist der Code:
Code: Alles auswählen
from random import choice
from json import dump
def pattern(layer, username):
	room = int(choice('123456'))
	item = int(choice('123456'))
	if room % 3 == 0:
		monster = room / 3
	elif room % 2 == 0:
		monster = room / 2
	else:
		monster = int(choice('1234'))
	file = open('/home/' + username + '/.local/share/save/pattern.file', 'w')
	dump({'room' : room, 'item' : item, 'monster' : monster}, file)
	file.close()
 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 15:38
				von BlackJack
				@hexflame: Ich finde da auch keinen Fehler.  Und Python findet dort ebenfalls keinen Fehler.
Allerdings ist vier Leerzeichen pro Ebene die konventionelle Einrücktiefe.
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 20:37
				von bb1898
				hexflame hat geschrieben:Hier ist die Fehlermeldung
Code: Alles auswählen
    file = open('/home/' + username + '/.local/share/save/pattern.file', 'w')
       ^
SyntaxError: invalid syntax
 
Könnte es sein, dass im Aufruf der Funktion der Fehler steckt und username leer ist - dann würde die Zeile so aussehen:
Code: Alles auswählen
    file = open('/home/' +  + '/.local/share/save/pattern.file', 'w')
Ich vermute, das wäre ein Syntaxfehler. Du könntest den Aufruf probehalber mal so abändern:
file = open('/home/{0}/.local/share/save/pattern.file'.format(username), 'w')
Oder, eigentlich besser, mit os.path.join(...) den Dateinamen zusammensetzen. Und überhaupt, zumindest zum Testen: setz den Dateinamen vor dem Aufruf von open zusammen und lass ihn ausgeben.
 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 21:13
				von BlackJack
				@bb1898: Kann es sein das Du in letzter Zeit zu viel Shell-Programmierung gemacht hast?  Egal an was `username` gebunden ist, verschwindet der Name nicht einfach so und hinterlässt einen Syntaxfehler.  Python macht da doch keine Textersetzung auf Quelltextebene.  Das macht keine vernünftige Programmiersprache.  Nicht mal PHP.  

 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Sonntag 27. März 2016, 21:22
				von mutetella
				bb1898 hat geschrieben:Könnte es sein, dass im Aufruf der Funktion der Fehler steckt und username leer ist - dann würde die Zeile so aussehen:
Code: Alles auswählen
    file = open('/home/' +  + '/.local/share/save/pattern.file', 'w')
Ich vermute, das wäre ein Syntaxfehler.
 
Mit Deiner Vermutung liegst Du daneben…  

 Wenn Du eine Funktion aufrufst und dabei die von ihr erwarteten Argumente nicht übergibst, erhältst Du einen `TypeError`. Bis zur Stelle ``file = …`` gelangst Du also erst gar nicht. Und selbst wenn das, was Du vermutest irgendwie zustande käme, würde an einer Stelle, an der ein nicht definierter Name auftaucht, allenfalls ein `NameError` provoziert werden.
Ein `SyntaxError` taucht nicht auf, weil ein Fehler in der Logik des Codes besteht, sondern weil etwas an der Schreibweise nicht stimmt. Ein Rechtschreibfehler, wenn man so will…
 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Montag 28. März 2016, 10:28
				von bb1898
				mutetella hat geschrieben:Ein `SyntaxError` taucht nicht auf, weil ein Fehler in der Logik des Codes besteht, sondern weil etwas an der Schreibweise nicht stimmt. Ein Rechtschreibfehler, wenn man so will…
Eben. Und weil der Rechtschreibfehler im hier sichtbaren Code nicht zu finden ist, war meine Vermutung, dass er eigentlich nur aus dem übergebenen Parameter 'username' stammen kann. Meine Vorstellung vom übergebenen Leerstring würde allerdings wirklich keinen Syntaxfehler ergeben, das war Quatsch. Da würde dann die Datei nicht gefunden, allenfalls etwas produziert, was kein Dateiname sein kann. 
@hexflame: wo wird der Parameter gesetzt? Wird er vom Benutzer eingegeben? Hast Du inzwischen mal probiert, den Dateinamen vor dem open-Aufruf zusammenzusetzen und auszugeben? Außerdem: ganz am Anfang schreibst Du
hexflame hat geschrieben:Dennoch gibt er bei mir an, dass das
Code: Alles auswählen
file = open("/home/" + username + "/.local/share/save/pattern.file","w")
ein `SyntaxError` sei sobald ich es importieren will.
 
Zeig doch mal, wie dieses Importieren genau aussieht.
 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Montag 28. März 2016, 13:09
				von snafu
				@bb1898
Nichts für ungut, aber deine Vermutung bezüglich des `SyntaxError` zeugt von wenig Sachverstand. Wenn man keine Ahnung von einem bestimmten Bereich hat, dann sind wilde Vermutungen als Kommentar eher verwirrend anstatt hilfreich für den Hilfesuchenden. Zumal du bereits darauf hingewiesen wurdest, dass du daneben liegst.
Ein `SyntaxError` kann nur auftreten, wenn der Code beim Durchlaufen des Parsers als fehlerhaft erkannt wird. Auf dieser Stufe spielt die Bedeutung der verschiedenen Bezeichner (z.B. ob sie deklariert wurden) sowie der dahinterstehende Wert überhaupt keine Rolle. Ein Ausdruck bekommt nicht auf magische Weise eine völlig andere Bedeutung, sobald ein "unpassender" Wert dahinter steht. Mal als Vergleich aus der Mathematik: ``x + 1 = 3`` bleibt auf syntaktischer Ebene immer gleich - egal, was für `x` eingesetzt wird.
Falls dir nicht klar ist, was man unter Syntax versteht (auch in Abgrenzung zur Semantik):
https://de.wikipedia.org/wiki/Syntax 
			 
			
					
				Re: `SyntaxError` beim Öffnen einer Datei
				Verfasst: Montag 28. März 2016, 13:11
				von snafu
				bb1898 hat geschrieben:Meine Vorstellung vom übergebenen Leerstring würde allerdings wirklich keinen Syntaxfehler ergeben, das war Quatsch.
Hatte ich überlesen. Ändert aber nichts am Rest meines Beitrags.