2012-09-22 10 views
9

Mein Python-Programm hat Probleme beim Öffnen einer Textdatei. Wenn ich die grundlegende offene Datei zum Lesen verwende, erhalte ich einen ASCII-Fehler. Jemand hat mir geholfen, indem ich einen Codierungsparameter hinzufügte, der gut im Leerlauf funktioniert, aber wenn ich das Programm über Terminal ausführe, erhalte ich folgende Fehlermeldung: "TypeError: 'encoding' ist ein ungültiges Schlüsselwort für diese Funktion" Wie kann ich Lesen Sie diese Textdatei, um ihre Daten zu verwenden?TypeError: 'Codierung' ist ein ungültiges Schlüsselwort Argument für diese Funktion

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) 

Antwort

12

Das Terminal Sie versuchen, dies wahrscheinlich laufen auf verwendet Python 2.x als Standard.

Sie den Befehl "Python3" speziell im Terminal:

$ Python3 yourfile.py

3

+1 (getestet und bestätigt, dass 2.7 wird diesen Fehler geben und dass Python3 es Griffe gut.) an die Unfun Cat für eine korrekte Antwort bezüglich Linux etc.

Für Windows-Benutzer wird jedoch 'Python3' im Allgemeinen nicht funktionieren. Aber wenn Sie installiert haben Python 3.3 (oder wenn Sie heruntergeladen und installiert haben Python Launcher für Windows), können Sie Folgendes eingeben:

C:\scr>py -3 yourfile.py 

Eigentlich auch diese Launcher shebang Syntax unterstützt, so dass das Hinzufügen der folgenden ersten Zeile Ihr Skript-Datei funktioniert ziemlich Cross-Plattform (das Verzeichnis/usr/bin unter Windows ignoriert wird): dass

#! /usr/bin/python3 

nach tun, vorausgesetzt, dass Windows \ py.exe ist die Standardprozedur für Py-Dateien, können Sie einfach eingeben:

C:\scr>yourfile.py 

Und wenn "Py" in Ihrem PATHEXT Umgebungsvariable ist, können Sie einfach eingeben:

C:\scr>yourfile 

Weitere Informationen:

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

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

Verwandte Themen