1

私は宿題のために次のように書きました、そしてそれはPython3を実行しているIDLEとEclipseでうまく働きます。

ただし、ここで見つけた新しい行1を使用してTextMateから実行し、Mac上のPython3を指すようにしました。Python 3を実行しているようですが、エラーを返します。EOFError:行を読み取るときのEOF。以下の5行目を参照しています。

誰もが理由を知っていますか?

ところで、このTextMateの問題は宿題の一部ではないので、宿題の助けを借りようとはしていません。Python3でTextMateを使用する方法を理解したいだけです。

#! /usr/local/bin/python3
#
# Tests user string against two conditions.
#
user_string = input("Enter a string that is all upper case and ends with a period: ")
if user_string.isupper() and user_string.endswith("."):
    print("Your string met both conditions.")
else:
    if user_string.isupper():
        print("Your string does not end with a period.")
    elif user_string.endswith("."):
        print("Your string is not all upper.")
    else:
        print("Your string failed both conditions.")
4

2 に答える 2

2

表示されている問題は、Python のバージョンとは関係ありません。問題は、TextMate が標準入力をリダイレクトしようとしないことです。そのため、TextMate の Python バンドルRun Scriptコマンドを使用して実行している場合、Python プログラムはすぐにファイルの終わりを認識します。 here で説明されているように、TextMate はこれについてより洗練されていましたが、それが使用していたメカニズムは OS X 10.6 では機能しなくなったため、この機能は無効になりました。

1 つの解決策は、TextMate の Python バンドルのShift-Command-R コマンドを使用することです。Run Script in Terminalこれにより、TextMate はターミナル ウィンドウを開き、そこでスクリプトを実行し、そこで入力を行うことができます。残念ながら、TextMate は通常のCommand-R Run Script commandでシバン行を尊重しますが、コマンドではそうしないようですRun Script in Terminal。さまざまな方法で自分自身を確認できます。このコード スニペットを TextMate で実行してみてください。

#! /usr/local/bin/python3
import sys
print(sys.executable)

これを回避するにはTM_PYTHON、TextMate で環境変数を設定します。その方法の詳細については、こちらの回答を参照してください。

于 2010-12-23T08:32:01.767 に答える
0

Textmate は、シバン行を尊重するのではなく、組み込みの Python を使用しています。適切な python を使用するには、おそらくバンドル コードをハックする必要があります。

于 2010-12-23T06:27:09.507 に答える