在Python中进行向后兼容的输入调用

24 浏览
0 Comments

在Python中进行向后兼容的输入调用

我想知道是否有人有关于编写一个向后兼容的input()调用以检索文件路径的建议?\n在Python 2.x中,raw_input对于像/path/to/file这样的输入工作得很好。在3.x中使用input在这种情况下运行良好,但在2.x中会由于eval行为而报错。\n一个解决方案是检查Python的版本,并根据版本将input或raw_input映射到一个新的函数:\n如果 sys.version_info[0] >= 3:\n get_input = input\nelse:\n get_input = raw_input\n不过,我相信肯定有更好的方法来做到这一点。有人有什么建议吗?

0
0 Comments

在Python中,出现了“Backwards-compatible input calls”的问题。这个问题的原因是,当处理字符串和文件时,使用标准的输入调用函数会导致在向后兼容的Python3程序中出现问题。为了解决这个问题,最好有两个版本的程序,而不是使用向后兼容的Python3程序。

以下是解决这个问题的代码示例:

import sys
# For Python 2.x
if sys.version_info.major < 3:
    input_function = raw_input
else:
    input_function = input
# 使用input_function代替input调用
user_input = input_function("请输入一个字符串:")
print("你输入的字符串是:" + user_input)

使用这种方法,可以根据Python版本选择不同的输入调用函数。在Python 2.x中,使用`raw_input`函数获取用户输入,而在Python 3.x中,使用`input`函数获取用户输入。这样就可以避免在向后兼容的Python3程序中出现问题。

总之,为了处理字符串和文件时的向后兼容性问题,在Python中最好使用两个版本的程序,而不是只使用向后兼容的Python3程序。

0
0 Comments

Python中存在一个问题,即在不同版本的Python中使用不同的输入函数可能导致代码不兼容的情况。为了解决这个问题,可以通过以下方式进行兼容处理。

首先,通过导入Python 3.x中的print()函数到Python 2.7中,使得print()在两个版本中的行为相同。如果你的代码中存在旧的print "some content"调用,并且这会导致问题,你可以不导入这一行代码。

其次,将Python 2.7中的raw_input()设置为input(),这样在两个版本的Python中都可以使用input()而不会出现问题。如果你只需要处理这个兼容性问题,可以只使用这两行代码。

在Python.org的网站上还有更多的from __future__导入可以用于处理其他语言兼容性问题。此外,还可以查找名为"six"的库,用于处理其他问题的兼容性解决方案。

0
0 Comments

Python 2.x版本中的input()函数基本上没有用,可以通过raw_input函数来覆盖它:

try:
    input = raw_input
except NameError:
    pass

一般来说,我不会试图编写同时适用于Python 2.x和3.x的代码,而是通过使用2to3脚本来编写能在2.x版本上运行的代码,并得到一个可用的3.x版本。

原因:Python 2.x版本中的input()函数存在一些问题,因此在Python 3.x版本中被废弃。为了向后兼容,有时候需要在2.x版本中使用raw_input函数来覆盖input()函数。

解决方法:通过使用tryexcept语句,将Python 2.x版本中的input()函数覆盖为raw_input函数,以解决在2.x版本中无法使用input()函数的问题。

一般来说,不建议尝试编写同时适用于Python 2.x和3.x版本的代码。而是建议在2.x版本上编写代码,并使用2to3脚本将其转换为在3.x版本上可用的代码。这样可以确保代码在2.x版本上正常工作,并获得一个可用的3.x版本。

0