我见过一些代码(例如this tutorial from dropbox),它们可能需要在Python2.x上运行相当长的时间,但在Python3.x上也可能需要
这些项目应该如何处理raw_input
我想是这样的
#!/usr/bin/env python
def input_string(question=""):
"""A function that works for both, Python 2.x and Python 3.x.
It asks the user for input and returns it as a string.
"""
import sys
if sys.version_info[0] == 2:
return raw_input(question)
else:
return input(question)
# Example
answer = input_string("What is your name? ")
print(answer)这可能是个好办法,但我不太确定。
是否有“官方”建议(例如,以PEP的形式)如何处理它?到目前为止,这是如何完成的?
发布于 2014-08-20 02:32:15
这个怎么样?
try:
input = raw_input
except NameError:
pass
print("Hi " + input("Say something: "))发布于 2014-08-20 02:26:26
您有几个选择
选项1-仅使用2to3
2to3是一个python程序,它会适当地转换您的程序,从而解决这个问题
从上面的链接:
这里是一个示例Python2.x源文件example.py:
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)它可以通过命令行上的2to3转换为Python3.x代码:
$ 2to3 example.py 将打印与原始源文件不同的文件。2to3还可以将所需的修改写回源文件。(除非还提供了-n,否则将备份原始文件。)使用-w标志可以将更改写回:
$ 2to3 -w example.py 转换后,example.py如下所示:
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)选项2-使用try/except块
try:
return raw_input(question)
except NameError:
return input(question)这将帮助您避免每次更改时都必须重新运行2to3。为了避免这样做,你可以把它放在一个函数中,如下所示
def real_input(astring=""):
try:
return raw_input(astring)
except NameError:
return input(astring)然后,只要需要用户输入,就使用real_input()
https://stackoverflow.com/questions/25390269
复制相似问题