TypeError: ‘encoding’ is een ongeldig trefwoordargument voor deze functie

Mijn python-programma heeft problemen met het openen van een tekstbestand. Wanneer ik het basis open bestand voor lezen gebruik, krijg ik een ascii-fout. Iemand heeft me geholpen door me een coderingsparameter toe te voegen die goed werkt in Idle, maar wanneer ik het programma via terminal uitvoer, krijg ik deze foutmelding: “TypeError: ‘encoding’ is een ongeldig trefwoordargument voor deze functie” Hoe kan ik dit tekstbestand inlezen om de gegevens te gebruiken?

try:
    import tkinter as tk
    from tkinter import *
except:
    import Tkinter as tk
    from Tkinter import *
import time
import sys
import os
import random
flashcards = {}
def Flashcards(key, trans, PoS):
    if not key in flashcards:
        flashcards[key] = [[trans], [PoS]]
    else:
        x = []
        for item in flashcards[key][0]:
            x.append(item)
        x.append(trans)
        flashcards[key][0] = x
        x = []
        for item in flashcards[key][1]:
            x.append(item)
        x.append(PoS)
        flashcards[key][1] = x
def ImportGaeilge():
    flashcards = {}
    with open('gaeilge_flashcard_mode.txt','r', encoding='utf8') as file:
        for line in file:
            line1 = line.rstrip().split("=")
            key = line1[0]
            trans = line1[1]
            PoS = line1[2]
            Flashcards(key, trans, PoS)
def Gaeilge():
    numberCorrect = 0
    totalCards = 0
    ImportGaeilge()
    wrongCards = {}
    x = input('Hit "ENTER" to begin. (Type "quit" to quit)')
    while x != quit:
        os.system('cls')
        time.sleep(1.3)
        card = flashcards.popitem()
        if card == "":
## WRONG CARDS
            print ("Deck one complete.")
            Gaeilge()
        print("\n\n")
        print(str(card[0])+":")
        x = input("\t:")
        if x == 'quit':
            break
        else:
            right = False
            for item in card[1]:
                if x == card[1]:
                    right = True
                    print("\nCorrect!")
                    numberCorrect += 1
            if right == False:
                print(card[0])
        totalCards += 1
        print("Correct answers:", str(numberCorrect) +"/"+str(totalCards))
Gaeilge()

gaeilge_flashcard_mode.txt:

I=mé=(pron) (emphatic)
I=mise=(n/a)
you=tú=(pron) (subject)
you=tusa=(emphatic)
y'all=sibh=(plural)
y'all=sibhse=(emphatic)
he=sé=(pron)
he=é=(n/a)
he=seisean=(emphatic)
he=eisean=(n/a)
she=sí=(pron)
she=í=(n/a)
she=sise=(emphatic)
she=ise=(emphatic)
him=é=(pron)
him=eisean=(emphatic)
her=í=(pron)
her=ise=(emphatic)
her=a=(adj)

Antwoord 1, autoriteit 100%

De terminal waarop u dit probeert uit te voeren, gebruikt waarschijnlijk standaard Python 2.x.

Probeer het commando “Python3” specifiek in de terminal te gebruiken:

$ Python3 yourfile.py

(Getest en bevestigd dat 2.7 die fout zal geven en dat Python3 het prima afhandelt.)


Antwoord 2, autoriteit 22%

het gebruik van io.open()in plaats van openheeft deze fout voor mij verwijderd
bv:

import io
with io.open('gaeilge_flashcard_mode.txt','r', encoding='utf8') as file:
    for line in file:
        line1 = line.rstrip().split("=")
        key = line1[0]
        trans = line1[1]
        PoS = line1[2]
        Flashcards(key, trans, PoS)

referentie: zie dit antwoord


Antwoord 3, autoriteit 10%

+1 naar The Unfun Cat voor een correct antwoord met betrekking tot Linux enz.

Voor Windows-gebruikers werkt het aanroepen van ‘Python3’ echter over het algemeen niet. Maar als je Python 3.3 hebt geïnstalleerd (of als je Python Launcher voor Windows hebt gedownload en geïnstalleerd), kun je typen:

C:\scr>py -3 yourfile.py

Eigenlijk ondersteunt deze launcher ook shebang-syntaxis, dus het toevoegen van de volgende eerste regel aan het bestand van je script zal redelijk platformonafhankelijk werken (de /usr/bin wordt genegeerd in Windows):

#! /usr/bin/python3

Nadat je dat hebt gedaan, ervan uitgaande dat windows\py.exe de standaardhandler is voor .py-bestanden, kun je gewoon typen:

C:\scr>yourfile.py

En als “.PY” in uw PATHEXT-omgevingsvariabele staat, typt u gewoon:

C:\scr>yourfile

Meer info:

http://docs.python.org/3/whatsnew/3.3.html

http://www.python.org/dev/peps/pep-0397 /

Other episodes