python eof while scanning_Python eoferor在while循环中使用raw_inpu时

我不知道如何在提示原始输入后,在while循环的第二次迭代中避免eoferor。我需要这个循环运行30次,理想情况下不会有一个try-except块从程序启动我。任何帮助都将不胜感激!`在import sys

import pyaudio

import wave

import os

import fcntl

import time

def main():

sound_cues = open('sound_cues').read().splitlines()

light_cues = open('light_cues').read().splitlines()

play_names = open('play_names').read().splitlines()

plays = []

for idx in range(len(play_names)):

plays.append( {'name': play_names[idx], 'sound': sound_cues[idx], 'lights': light_cues[idx]} )

while(True):

play_num = raw_input("Enter a play number: ")

play = plays[int(play_num) - 1]

print

print 'lights:'

print play['lights']

print

raw_input("Press Enter to start sound...")

print

print 'sound:'

print play['sound']

audio = "sounds/" + play['sound']

wf = wave.open(audio)

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),

channels = wf.getnchannels(),

rate = wf.getframerate(),

output=True)

data = wf.readframes(1024)

fl = fcntl.fcntl(sys.stdin.fileno(), fcntl.F_GETFL)

fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL, fl | os.O_NONBLOCK)

print

print "Press Enter to stop audio..."

print

while data != '':

try:

stdin = sys.stdin.read()

if "\n" in stdin or "\r" in stdin:

break

except IOError:

pass

stream.write(data)

data = wf.readframes(1024)

if __name__ == "__main__":

main()

`

输出是`

^{pr2}$

`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值