首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该如何编写使用`raw_input`来使用Python2.x和3.x的应用程序?

我应该如何编写使用`raw_input`来使用Python2.x和3.x的应用程序?
EN

Stack Overflow用户
提问于 2014-08-20 02:15:14
回答 2查看 197关注 0票数 2

我见过一些代码(例如this tutorial from dropbox),它们可能需要在Python2.x上运行相当长的时间,但在Python3.x上也可能需要

这些项目应该如何处理raw_input

我想是这样的

代码语言:javascript
运行
复制
#!/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的形式)如何处理它?到目前为止,这是如何完成的?

EN

回答 2

Stack Overflow用户

发布于 2014-08-20 02:32:15

这个怎么样?

代码语言:javascript
运行
复制
try: 
    input = raw_input
except NameError: 
    pass
print("Hi " + input("Say something: "))
票数 0
EN

Stack Overflow用户

发布于 2014-08-20 02:26:26

您有几个选择

选项1-仅使用2to3

2to3是一个python程序,它会适当地转换您的程序,从而解决这个问题

从上面的链接:

这里是一个示例Python2.x源文件example.py:

代码语言:javascript
运行
复制
def greet(name):
    print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)

它可以通过命令行上的2to3转换为Python3.x代码:

代码语言:javascript
运行
复制
$ 2to3 example.py 

将打印与原始源文件不同的文件。2to3还可以将所需的修改写回源文件。(除非还提供了-n,否则将备份原始文件。)使用-w标志可以将更改写回:

代码语言:javascript
运行
复制
$ 2to3 -w example.py 

转换后,example.py如下所示:

代码语言:javascript
运行
复制
def greet(name):
    print("Hello, {0}!".format(name)) 
print("What's your name?") 
name = input() 
greet(name)

选项2-使用try/except

代码语言:javascript
运行
复制
try:
    return raw_input(question)
except NameError:
    return input(question)

这将帮助您避免每次更改时都必须重新运行2to3。为了避免这样做,你可以把它放在一个函数中,如下所示

代码语言:javascript
运行
复制
def real_input(astring=""):
    try:
        return raw_input(astring)
    except NameError:
        return input(astring)

然后,只要需要用户输入,就使用real_input()

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25390269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档