Python PyDev,防止从input()返回回车符

时间:2010-08-18 17:47:13

标签: python windows eclipse pydev carriage-return

EDIT-4

我已经让我的sitecustomize.py执行了,但它丢失了一个错误。 Here's the code为此。

错误是:

Error in sitecustomize; set PYTHONVERBOSE for traceback:
RuntimeError: maximum recursion depth exceeded while calling a Python object

我还没有非常先进的Python,所以我想我只会评论出我认为不需要的线条。没有编码问题出现,所以我只是注释了第23-104行,但这也没有帮助。

EDIT-3

我也碰巧安装了2.5.1,所以我用它编译了另一个脚本。

print 'This will test carriage returns on Windows with PyDev on Eclipse Helios'
print'Type something:',
test = raw_input()
print('You entered the following ascii values:')
for c in test:
    print(str(ord(c)))

这很好,导致了

This will test carriage returns on Windows with PyDev on Eclipse Helios
Type something: g
You entered the following ascii values:
103

所以这可能只是Python3的东西?我知道它不是解释器,因为我能够在命令提示符下运行它就好了。是什么给了什么?

EDIT-2

刚刚使用Helios进行测试,仍然遇到同样的问题。这是我的测试程序:

print('This will test carriage returns on Windows with PyDev on Eclipse Helios.')
print('Type something:', end='')
test = input()
print('You entered the following ascii values:')
for c in test:
    print(str(ord(c)))

这是我输入'g'并按Enter键时的输出:

This will test carriage returns on Windows with PyDev on Eclipse Helios.
Type something:g
You entered the following ascii values:
103
13

在宏伟的计划中,这是一个小问题。我可以使用 input()。rstrip(),它可以工作。但是甚至不需要解决方法。我输入的语言是我正在使用的语言的两倍,因为它简洁而美观。

EDIT-1

这是Eclipse 3.5。不幸的是,这是批准在工作中使用的最新版本。我打算在家里尝试3.6,看看是否有任何不同,但无论如何我都无法使用它。


(原始问题)

我一直在学习一些基本的Python,并决定使用PyDev,因为它支持Python 3以及所有漂亮的代码片段和自动完成功能。

但是,我在Windows上遇到了那个糟糕的回车问题。

我的搜索总是将我带回此邮件列表: http://www.mail-archive.com/python-list@python.org/msg269758.html

所以我抓住了sitecustomize.py文件,尝试将其包含在我配置的解释器的Python路径以及我的项目中,但无济于事。

有没有其他人设法解决这个问题?或者也许知道如何让新的sitecustomize.py实际执行,以便它可以覆盖input()和raw_input()?

我知道我总是可以使用自己的替换input()函数创建一个短模块,但我真的想从根本上解决问题。 Aptana承认这个问题(http://pydev.org/faq.html#why_raw_input_input_does_not_work_correctly),但没有提供解决方案。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

找出一个hack,让它在我的Python安装本地工作。在\ Lib \ site-packages \中创建一个名为“sitecustomize.py”的脚本,并将此代码放入其中:

original_input = builtins.input

def input(prompt=''):  
    return original_input(prompt).rstrip('\r')

input.__doc__ = original_input.__doc__

builtins.input = input

我对此的副作用一无所知,或者我应该做什么样的错误检查,但如果你在Windows上使用PyDev用Python3编写脚本,它就可以了。

答案 1 :(得分:0)

发现了一些关于sitecustomize.py的更多信息以及它与site.py的关系。

我不知道如何将我自己的sitecustomize.py添加到PYTHONPATH只能在PyDev项目中执行,所以我只是把它放在$ {Python31dir} \ Libs \ site-packages中。该模块现在运行,但会产生错误。