输入在shell中有效但在终端中无效

0 投票
3 回答
3791 浏览
提问于 2025-04-16 17:25

我有一个文件:

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

但是当我在命令行中运行时,它运行得很好:

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

为什么在终端里不行呢?

有没有办法确保(至少对于那些没有特别设计成其他行为的代码)命令行和终端的表现是一样的,这样我就不用分别检查它们了?

3 个回答

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代码,这就是为什么你会看到“无效的语法”错误)。

4

你需要像这样运行

python3 /users/rickyd/desktop/test.py

这样应该就能正常工作了

3

当你在终端里运行这个程序时,你其实是在用Python 2来运行它。这就是为什么它不工作的原因。

你用的是什么操作系统?你是怎么运行这个程序的呢?

撰写回答