输入工作在shell但不是终端

时间:2011-05-11 08:06:18

标签: python python-3.x

我有:

filename = input()
with open(filename) as file:
    print('It opened.')

在我的桌面上保存为“test.py”。

我从终端运行它,然后得到:

blahblahblah:~ rickyd$ python /users/rickyd/desktop/test.py
/users/rickyd/desktop/tryme.txt
Traceback (most recent call last):
  File "/users/rickyd/desktop/test.py", line 1, in <module>
    filename = input()
  File "<string>", line 1
    /users/rickyd/desktop/tryme.txt
    ^
SyntaxError: invalid syntax

当我在shell中运行它时,它完美地运行:

>>> ================================ RESTART ================================
>>> 
/users/rickyd/desktop/tryme.txt
It opened.
>>> 

为什么它不在终端工作?

有没有办法确保(至少对于未明确设计的代码而言) shell和终端会给出相同的行为,所以我不必单独检查它们吗?

3 个答案:

答案 0 :(得分:4)

您需要像

一样运行
python3 /users/rickyd/desktop/test.py

它应该有用

答案 1 :(得分:3)

当您在终端中运行它时,您正在使用Python 2运行它。这就是它无效的原因。

你在哪个操作系统,以及如何运行它?

答案 2 :(得分:1)

您可以通过键入以下内容来检查命令行Python的版本:

C:\work>python -V
Python 2.7.1

(这是一个大写的V)或者只是输入没有选项的python并查看交互式提示消息开头显示的版本号。这似乎是2.x与3.x问题,因为3.x中的input()等同于2.x中的raw_input()(在2.x中,input()函数读入并评估输入为python代码,这就是你得到“无效语法”错误的原因。)