python程序在python shell vs terminal中表现不同

时间:2015-05-07 02:39:05

标签: python raspberry-pi

我有一个简单的Python程序,询问是或否问题,我验证了输入。 如果我运行这个Python shell,它运行正常。如果我输入了无效字符,它会循环回到顶部。

但是,如果我在终端窗口中运行此命令并尝试输入无效字符,则会出现错误,如下所示。

   chunks = set([re.split('\(\d+\)',i)[1].split('.')[0] for i in df.columns if '.' in i])

for each_chunk in chunks:
        column_name = '%s' %each_chunk
        df[column_name] = df[[i for i in df.columns if each_chunk in i]].sum(axis=1)

## -- End pasted text --

In [1298]: df.head()
Out[1298]: 
          Probe     Gene  (3)bar.ID.LN.x1  (3)bar.ID.LN.x2  (3)bar.ID.LN.x3  \
0    1431492_at     Lipn                1                4                7   
1    1448678_at  Fam118a                2                5                8   
2  1452580_a_at   Mrpl21                3                6                9   

   (5)foo.ID.LN.x1  (5)foo.ID.LN.x2  (5)foo.ID.LN.x3    foo  bar  
0             20.3              130                1  151.3   12  
1             25.3              150                2  177.3   15  
2              3.1              173               12  188.1   18  

enter image description here

2 个答案:

答案 0 :(得分:3)

看起来你的RPi正在使用Python 2; input函数在那里执行eval Python 3中的input相当于Python 2中的raw_input。(参见PEP-3111

理想情况下,您应该将RPi解释器更改为Python 3.如果不这样做,您可以使其与版本无关:如下所示:

try:
    input = raw_input
except NameError:
    pass

答案 1 :(得分:2)

我可以在交互式shell中清楚地看到你在python 3.2.3(后台)中工作。但我无法从命令行(前台)看到你运行的python版本。

在您的raspberrypi上,从shell执行以下命令:

python --version

我希望在这里看到python 2.x,因为input()的行为在python 2和python 3之间有所不同,这种方式会导致你看到的行为。

您可能想添加一行

#!/usr/bin/env python3

.py文件的顶部,然后在其上chmod +x。之后你应该能够直接执行它(./guipy01.py)并自动选择正确的python解释器。