使用便携式Python时反复出现错误

-1 投票
2 回答
1475 浏览
提问于 2025-04-17 19:53

注意:这个问题的回答并不是最初标记的那个。这不仅仅是Python 2和3之间的问题,我在下面的评论中会解释得更清楚。

原始帖子:我在工作中尝试学习Python,所以我现在使用的是Portable Python 3.2.1.1(下面简称为PP)。我提到这一点是因为在我家用Mac和普通Python时,这个问题并不存在。

我正在学习《Learning Python the Hard Way》的第16个练习(http://learnpythonthehardway.org/book/ex16.html)。我听说这个学习工具不是最好的,但我完全是编程小白,喜欢动手学习。如果你有更好的建议,我很乐意听!

练习的前几行是:

    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的可执行文件在同一个文件夹里。我觉得这不是必须的,但希望这样能解决问题……结果并没有。当我在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.txtEx16.py Python.txt"%PATH&\Ex16.py" "%PATH%\Python.txt"(用实际的文件路径)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不工作呢?),但我不知道我哪里做错了。

谢谢!

2 个回答

2

你需要输入:

Portable-Python.exe Ex16.py Python.txt

在你的命令提示符下。要打开命令提示符,先按下Windows键和R键,然后输入“cmd”,再按回车。你现在应该看到类似于 c:\> 的界面。接下来,使用 cd 命令来找到你安装的便携版Python。

5

print 是 Python 3 中的一个函数:

print('my string with content and the like')

在 Python 3 中,它不再被视为一个“语句”。你可能想看看这个 关于 Python 2.x 到 Python 3.x 变化的列表(其中有很多不兼容的地方)。另外,找一个使用 Python 3 的教程可能会更好。

撰写回答