1

我正在使用 python 2.3.2。在脚本中,我想根据分隔符拆分字符串。所以打电话rpartition()。但是python显示以下错误

AttributeError: 'str' object has no attribute 'rpartition'

但是python解释器正在执行:

>>> cmd
'CHG-CELL-PARAM:CELL_IDX=0fff,NYL=43;3'
>>> cmdStr=cmd.rpartition(";")
>>> cmdStr
('CHG-CELL-PARAM:CELL_IDX=0fff,NYL=43', ';', '3')
>>>

在解释器中,“str”对象具有:

>>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find',
'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip',
'swapcase', 'title', 'translate', 'upper', 'zfill']
>>>

我的脚本中的相同输出给出:

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__str__', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

str 函数包含在解释器中,但不在我的脚本中。我只安装了 1 个 python,脚本和解释器都使用相同的 python exe。有什么我错过的吗?

4

1 回答 1

2

根据文档str.rpartition是在 Python 2.5 中引入的。这意味着您的交互式解释器至少是新的,即使您的脚本运行在一个非常旧的版本(2003 年的 2.3.2 版本)。事实上,由于交互式解释器中的字符串有.format,这意味着它至少是 2.6。交互式解释器应该在您打开它时告诉您它的版本 - 例如,

lvc@tiamat:~$ python
Python 3.2.3 (default, Apr 23 2012, 23:14:44) 
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

最有可能发生的是:

  • 您正在从文件管理器(或者,例如,从具有“在任意程序中打开”功能的文本编辑器)运行脚本,并且默认命令设置为您的包管理器未安装的 python(例如,它可能位于您的主目录中),或者
  • 你把它作为 运行./myscript.py,shebang 行设置为这样的非系统 Python

测试这一点的最简单方法是通过python myscript.py在终端中显式地在 Python 的系统版本中运行它。此外,在第二种情况下,您可以尝试将 shebang 命令(第一行,减去初始的#!)复制并粘贴到终端中,然后查看最终的 Python 版本。

于 2012-06-19T05:34:32.600 回答