输入在shell中有效但在终端中无效
我有一个文件:
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来运行它。这就是为什么它不工作的原因。
你用的是什么操作系统?你是怎么运行这个程序的呢?