我有一个简单的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
答案 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解释器。