My python program has trouble opening a text file. When I use the basic open file for read, I get an ascii error. Someone helped me out by having me add an encoding parameter that works well in Idle, but when I run the program through terminal, I get this error message: "TypeError: 'encoding' is an invalid keyword argument for this function" How can I read this text file in to use it's data?
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)
The terminal you are trying to run this on probably uses Python 2.x as standard.
Try using the command "Python3" specifically in the terminal:
$ Python3 yourfile.py
(Tested and confirmed that 2.7 will give that error and that Python3 handles it just fine.)
using io.open()
instead of open
removed this error for me eg:
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)
reference: see this answer
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With