2016-03-31 4 views
0

Ich habe ein Skript, dasWie mache ich Schleifen in Python und in diesem Skript?

import smtplib 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.MIMEBase import MIMEBase 
from email import encoders 
import pyaudio 
import wave 
from time import sleep 
FORMAT = pyaudio.paInt16 
CHANNELS = 2 
RATE = 44100 
CHUNK = 1024 
RECORD_SECONDS = 5 
WAVE_OUTPUT_FILENAME = "file.wav" 

audio = pyaudio.PyAudio() 

# start Recording 
stream = audio.open(format=FORMAT, channels=CHANNELS, 
      rate=RATE, input=True, 
      frames_per_buffer=CHUNK) 
print "recording..." 
frames = [] 

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
data = stream.read(CHUNK) 
frames.append(data) 
print "finished recording" 




# stop Recording 
stream.stop_stream() 
stream.close() 
audio.terminate() 

waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb') 
waveFile.setnchannels(CHANNELS) 
waveFile.setsampwidth(audio.get_sample_size(FORMAT)) 
waveFile.setframerate(RATE) 
waveFile.writeframes(b''.join(frames)) 
waveFile.close() 
sleep(10) 

ist, die meine Stimme für 5 Sekunden aufzeichnet und speichert sie in einer WAV-Datei. Jetzt Schleife haben es versucht, ich

while invalid_input : 
    start() 

am unteren Rand des Skripts den Befehl Hinzufügen und dem Befehl invalid_input = False am Anfang des Skripts ohne Glück. Bitte erklären Sie mir, wie Sie dieses Skript beim Start durchlaufen können. nach dem sleep(10) Befehl. Und auch mit mir bitte zusammenarbeiten, wie ich ein Neuling bin in Python

Grüße,

EDIT: Ich glaube, ich war nicht klar.
ich es will, dass, sobald es gestartet wird, und erreicht das Ende des Skripts, es geht wieder nach oben und tut es dann immer und immer wieder, bis somone tötet es

+0

Der Abstand in Ihrer for-Schleife ist falsch – ryekayo

+0

@ryekayo wo? –

+0

@ Mr.Helpy Sie müssen Zeilen in der Schleife einrücken – Cisplatin

Antwort

0

Um eine Schleife in Python zu machen, müssen Sie richtig einrücken. In Ihrem Code haben eingerückt Sie nicht richtig, per Python-Konvention:

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
    data = stream.read(CHUNK) 
    frames.append(data) 
    print "finished recording" 
+0

Ok fertig, aber jetzt öffnet es für einen Bruchteil einer Sekunde und schließt –

+0

Können Sie weitere Details in Ihre Frage darüber hinzufügen? Dein Titel und deine Fragen stimmen nicht genau überein – ryekayo

+0

Sorry mein Schlechter ich habe es behoben –

1

In Ordnung, wie sie in den Kommentaren erwähnt, einrücken müssen Sie. Python ist eine Codierung Sprache, die anstelle von end Vertiefung verwendet oder mit {} ex:

def function(): 
    #Do stuff 

Weiter, ich bin nicht sicher, was start() definiert ist, aber es wird standardmäßig startet Ihren Skript nicht, Sie müssen def start(): und legen Sie die Aufnahme und das Speichern von Skript in dieser Funktion. Und dann können Sie es später anrufen mit start()

Schließlich ist Ihre while-Anweisung invertiert. Wenn Sie die Schleife ausführen möchten, wenn invalid_input falsch ist, müssen Sie while invalid_input==False:

Verwandte Themen