io.UnsupportedOperation: not writable


Traceback (most recent call last):
File "/home/michi/python/2-dict-in-datei.py", line 6, in
print (datei.write(wort))
io.UnsupportedOperation: not writable

Hier wurde die Datei wahrscheinlich nur im Lesemodus geöffnet.

datei=open("liste.txt","r")

Um mit der Datei zu arbeiten muss sie im write Modus geöffnet werden.

datei=open("liste.txt","w")

Hilfe bei Dictonary

I’m trying to create a dictonary that searches for words and adds unknown words to a file. The error index out of range occurs. How can I solve this? I want create a translator. A translator for crochet pattern. The abbreviation from other language like inc=increase should be translatet to Zun = Zunnehmen in german. Thats why i cant use google or so on.+

#/usr/bin/python3
woerter = {}
fobj = open("woerterbuch.txt", "r")
for line in fobj: 
    line = line.strip()
    zuordnung = line.split(" ")
    woerter[zuordnung[0]] = zuordnung[1] 

while True: 
    wort = input("Please insert a word: ")
    if wort in woerter: 
        print("The german word means:", woerter[wort]) 
    else: 
        print("The word is unknown")
        print ("Please insert the translation")
        for engl in woerter:
            fobj.write("{} {}\n".format(engl, woerter[engl]))
fobj.close()        
michi@localhost ~/python $ less woerterbuch.txt 
sc fM inc Zun

try:
import Tkinter as tk
except:
import tkinter as tk

liste={"sc":"fM","inc":"Zun","dec":"Abn"}
def uebersetzung():
wort=str(e1.get())
if wort in liste:
print ("Ja, vorhanden, die Übersetzung ist")
else:
print ("Nein, noch nicht vorhanden")

def popupmsg():
popup = tk.Tk()
popup.wm_title("!")
label = Label(popup, text="Übersetzung:")
label.pack(side="top", fill="x", pady=10)
B1 = Button(popup, text="Okay", command = popup.destroy)
B1.pack()
popup.mainloop()

root = tk.Tk()
root.geometry("300x300")
make Esc exit the program

root.bind('', lambda e: root.destroy())

logo=PhotoImage(file="../../../../home/michi/python/kruemelmonster.png")
w=Label(root,compound=CENTER,image=logo)
w.pack()
e1=Entry(master=root)
e1.pack()
button=tk.Button(master=root,text="Exit", command=uebersetzung)
button.pack()
button1=Button(master=root,text="Übersetzen", command=popupmsg)
button1.pack()
root.mainloop()


SyntaxError: positional argument follows keyword argument

Übersetzungsergebnisse

In Python gibt es zwei Arten von Argumenten: Positionsargumente und Schlüsselwortargumente. Diese Argumente müssen in einer bestimmten Reihenfolge erscheinen, andernfalls gibt der Python-Interpreter einen Fehler zurück. In diesem Leitfaden werden wir über den Fehler „Positionsargument folgt Schlüsselwortargument“ sprechen und warum er ausgelöst wird. Wir sehen uns ein Beispiel-Code-Snippet mit diesem Fehler an, damit wir durchgehen können, wie man es löst. Lass uns anfangen!

Programmiersprachen haben wie die englische Sprache ihre eigenen Regeln. Diese Regeln werden als Syntax bezeichnet. Unser Fehler ist ein Syntaxfehler, was bedeutet, dass wir eine der Regeln zum Schreiben eines Python-Codes nicht befolgt haben. Der nächste Teil unseres Fehlers sagt uns, was diesen Fehler verursacht. In diesem Fall muss unser Code ein Positionsargument haben, das nach einem Schlüsselwortargument erscheint.

Positionsargumente sind Argumente, die an ihren jeweiligen Positionen erscheinen:

def add_numbers(a, b):
	return a + b

Let's call this function:

add_numbers(2, 3)

Seite wird noch ausbebaut …

Unsupported operation :not writeable python

Diese Fehlermeldung weist auf fehlende Rechte zum Schreiben hin. Wenn eine Datei bearbeitet werden soll muss dies über die Option w freigegeben werden. Ein Beispiel :

with open('file.txt', 'r') as file:
    file.write(exDict)

Hier ist die Datei file.txt nur mit Leserechten (r) versehen . Mit w wird die Datei im Schreibmodus geöffnet.

datei_in=open("fin.txt")
datei_out=open("fout.txt","w")
datei_in.close()
datei_out.close()

_tkinter.TclError: couldn’t connect to display „:0“

Du hast dich wahrscheinlich in einem Konsolenfenster zu root gemacht und dann versucht, das Programm zu starten. Das Programm (jedes grafische Programm) meldet dann, dass es keine Verbindung zum X-Server erhält. Das liegt daran, dass standardmäßig der X-Server Verbindungen von „außerhalb“ (in dem Fall von einem anderen User) verweigert. Das Problem lässt sich mit „xhost local:root“ beheben. Temporär für diese Sitzung nimmt der X-Server lokale Verbindungen vom User root an. Allerdings ist davon abzuraten, außer zu Administrationzwecken, mit dem User root zu arbeiten. Für die tägliche Standardarbeit am PC reichen die Rechte eines normalen Users in der Regel völlig aus.

TypeError: ‚module‘ object is not callable

Dies ist, was die Fehlermeldung bedeutet: Es heißt, dass das Modulobjekt nicht aufrufbar ist, da Ihr Code ein Modulobjekt aufruft. Ein Modulobjekt ist die Art von Dingen, die Sie beim Importieren eines Moduls erhalten. Sie haben versucht, ein Klassenobjekt innerhalb des Modulobjekts aufzurufen, das zufällig denselben Namen hat wie das Modul, in dem es enthalten ist. Hier ist eine Möglichkeit, diese Art von Fehler logisch aufzuschlüsseln: „Das Modulobjekt kann nicht aufgerufen werden. Python teilt mir mit, dass mein Code versucht, etwas aufzurufen, das nicht aufgerufen werden kann.

Das ist der Code der zu dieser Fehlermeldung gehört:

from tkinter import *
import tkinter as tk
mainwindow=tk()
mainwindow.loop()

Der Fehler wird durch die Angabe von mainwindow=tk() verursacht. Korrekt ist es so:

import tkinter as tk
from tkinter import *
window=tk.Tk()
window=mainloop()

Bitte die Großschreibung des T bei tk.Tk() beachten.

NameError: name ‚os‘ is not defined

Bitte prüfen ob das Modul os importiert ist.

Im Modul os findet man Dutzende von Funktionen, um mit dem Betriebssystem zu interagieren:

>>> import os
>>> os.getcwd()                         # das aktuelle Arbeitsverzeichnis
'C:\\Python33'
>>> os.chdir('/server/accesslogs')      # Arbeitsverzeichnis verändern
>>> os.system('mkdir today') # Kommando in der Systemshell ausführen
>>> 0

Dabei sollte unbedingt beachtet werden, import os statt from os import * zu verwenden, da ansonsten os.open() die eingebaute Funktion open() überschreibt, die sich vollkommen anders verhält.