40

Python プログラムでテキスト ファイルを開くことができません。基本的なオープン ファイルを読み取りに使用すると、ASCII エラーが発生します。Idle で適切に機能するエンコーディング パラメータを追加してくれましたが、ターミナルからプログラムを実行すると、「TypeError: 'encoding' はこの関数の無効なキーワード引数です」というエラー メッセージが表示されます。このテキスト ファイルを読み込んでデータを使用しますか?

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)
4

3 に答える 3

47

これを実行しようとしている端末は、おそらくPython2.xを標準として使用しています。

特にターミナルでコマンド「Python3」を使用してみてください。

$ Python3 yourfile.py

(2.7でエラーが発生し、Python3で問題なく処理されることをテストおよび確認しました。)

于 2012-09-22T06:57:08.677 に答える
4

Linuxなどに関する正解については、The Unfun Catに+1してください。

ただし、Windows ユーザーの場合、'Python3' を呼び出しても通常は機能しません。ただし、Python 3.3 をインストールしている場合 (または Windows 用の Python Launcher をダウンロードしてインストールしている場合) は、次のように入力できます。

C:\scr>py -3 yourfile.py

実際、このランチャーはシバン構文もサポートしているため、次の最初の行をスクリプトのファイルに追加すると、かなりクロスプラットフォームで機能します (Windows では /usr/bin は無視されます)。

#! /usr/bin/python3

それを行った後、windows\py.exe が .py ファイルの既定のハンドラーであると仮定すると、次のように入力できます。

C:\scr>yourfile.py

また、「.PY」が PATHEXT 環境変数にある場合は、次のように入力できます。

C:\scr>yourfile

より詳しい情報:

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

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

于 2012-12-13T19:42:12.837 に答える