<p>这里可能有两个问题。我很难产生这个过程。这在中显示为EOF错误皮亚诺巴例外对于“获取电台…确定。\r\n”。要查看发生了什么,请处理EOF异常并打印皮亚诺巴之前:</p><div^{cl1}$&13;
<div^{cl2}$&13;
<pre class="snippet-code-css lang-css prettyprint-override"><code># Launch pianobar as pi user (to use same config data, etc.) in background:
print('Spawning pianobar...')
pianobar = pexpect.spawn('sudo -u pi /home/pi/pianobar/pianobar', timeout=60)
print('Receiving station list...')
expectIdx = pianobar.expect(['Get stations... Ok.\r\n', pexpect.EOF, pexpect.TIMEOUT])
if expectIdx == 0:
stationList, stationIDs = getStations()
try: # Use station name from last session
stationNum = stationList.index(defaultStation)
except: # Use first station in list
stationNum = 0
print 'Selecting station ' + stationIDs[stationNum]
pianobar.sendline(stationIDs[stationNum])
elif expectIdx == 1: # EOF
print 'pianobar.expect EOF error'
print pianobar.before # shows response from pianobar spawn
pianobar.kill(0)
elif expectIdx == 2: # TIMEOUT
print 'pianobar.expect TIMEOUT error'
pianobar.kill(0)</code></pre>
;
</div>和13;
</div>和13;
<p>我通过指定pianobar的完整路径解决了我的问题(如上所示)。在</p>
<p>第二个问题可能是因为pianobar配置中有一个有效的默认工作站。如果在这种情况下,启动时没有显示“选择电台”列表,则需要请求它。此错误显示在皮亚诺巴。期待在getStations()中。我通过在初始请求超时时请求站点列表来解决这个问题:</p><div^{cl1}$&&13;
<div^{cl2}$&13;
^{pr2}$
;
</div>和13;
</div>和13;