我为家庭作业写了以下内容,它在IDLE和运行Python 3的Eclipse中运行良好.
但是,我尝试使用新的第1行(我在这里找到)从TextMate运行它,将它指向Mac上的Python 3.它似乎运行Python 3但返回错误.它说:EOFError:读取一条线时的EOF.它指的是下面第5行.
谁知道为什么?
顺便说一句,这个TextMate问题不是家庭作业的一部分,所以我不想尝试做功课.我只想弄清楚如何在Python 3中使用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.")
解决方法:
您看到的问题与Python版本无关.问题是TextMate不会尝试重定向标准输入,因此当您通过TextMate的Python包运行脚本命令运行时,Python程序会立即看到文件末尾. As explained here,TextMate曾经对此更加兴趣,但它使用的机制不再适用于OS X 10.6,因此该功能被禁用.
一种解决方案是在TextMate的Python包的Terminal命令中使用Shift-Command-R Run Script.这会导致TextMate打开终端窗口并在那里运行脚本,您可以在那里输入输入.不幸的是,虽然TextMate使用正常的Command-R Run Script命令确实尊重shebang行,但它似乎没有使用Terminal命令中的Run Script执行此操作.您可以通过各种方式验证自己.尝试在TextMate中运行此代码段:
#! /usr/local/bin/python3
import sys
print(sys.executable)
为了解决这个问题,您可以在TextMate中设置TM_PYTHON环境变量.有关如何执行此操作的详细信息,请参阅the answer here.
标签:python,textmate,eoferror 来源: https://codeday.me/bug/20191007/1864335.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。