注意:标记为原始问题的问题未回答此问题。这不仅仅是 Python v2 与 v3 的问题,我在下面的评论中对此进行了解释。
原帖:我正在尝试在工作中学习 Python,所以我目前使用的是 Portable Python 3.2.1.1(以下简称 PP)。(我之所以提到这一点,是因为当我使用我的 Mac 和常规 Python 时,这个问题不会发生在家里。)
我正在完成Learn Python the Hard Way ( http://learnpythonthehardway.org/book/ex16.html ) 的练习16。我听说这不是最好的学习工具,但我是一个完整的编程 n00b 并且我是一个动手学习者。如果你有更好的建议,我很乐意!
练习的前几行内容如下:
from sys import argv
script, filename = argv
print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
我的脚本名为 Ex16.py,我使用的文件是 Python.txt,它们都与 PP .exes 位于同一文件夹中。我认为这没有必要,但希望它可能会解决问题......消极。当我在 PP 中按“运行”时,它不起作用,因为 argv 要求您在启动脚本时提供一个参数:python Ex16.py Python.txt
当我启动 Python.exe(在 PP 中是 Portable-Python.exe)时,我得到标准的 Python 提示符 >>>,但无论我输入什么,我都会收到相同的错误消息:
File "<stdin>", line 1
with whatever I've just tried repeated back to me with the marker to
indicate where the problem is. (has not been helpful so far)
SyntaxError: invalid syntax
我尝试在 >>> 提示符下键入以下内容:
python Ex16.py Python.txt
,,
Ex16.py Python.txt
,,
"%PATH&\Ex16.py" "%PATH%\Python.txt" (with the actual filepaths)
,,
print 'hello world'
我只是一遍又一遍地收到相同的无效语法错误。即使是基本的打印命令也返回了无效的语法错误。唯一触发不同错误的是我尝试了整个文件路径的错误。那个返回:
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in
position 2-3: truncated \UXXXXXXXX escape
是的,我已经用谷歌搜索了这两个错误。我读到有时问题不是将退格键加倍,所以我也尝试了,将两个 \ 放在两个文件路径中之前只有一个的位置。我什至尝试— # -*- coding: utf-8 -*-
在脚本的开头放置一些 unicode 错误。这与完整的文件路径一起导致了前面提到的相同的 unicode 错误。
是的,我已经检查了我的代码是否与练习中的代码相匹配。
是的,这适用于非 PP。
所有这一切让我相信问题可能出在我试图在 PP 中运行脚本的方式上(但为什么print
不起作用?),但我不知道我做错了什么。
谢谢!