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 open
heeft 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)
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: