2017-02-20 5 views
0

私はPythonの初心者です。私はWebラジオを取得し、ストリームをファイル内に保存しようとします。私はしばらくしてから内容をフラッシュしたい(例としてストリームの1時間しか保持しない)。だから私はすべてのストリームを1つのファイルに書き込むのではなく、ストリームを多くのファイルに保存しようとします(output_1.binは1分間、output_2.binは次のストリーム...)for文を終了し、ストリームを新しいファイルにPythonで書き込みます。

私はできません"for"から正しく終了する。 exit()はこの目的のために作られていませんか?

def download_file(url): 
    r = requests.get(url, stream=True) 
    i = 1 
    while True: 
     local_filename = "output_"+str(i)+".bin" 
     with open(local_filename, 'wb') as f: 
      for chunk in r.iter_content(chunk_size=1024): 
       if chunk: # filter out keep-alive new chunks 
        f.write(chunk) 
        i = i+1 
        print("iteration",i,"and modulo result :",i % 10,"\n") 
        if i % 10 == 0: 
         exit() 
     f.close() 
     print("Am I out of the for ?") 
    return local_filename 

download_file('http://direct.franceinfo.fr/live/franceinfo-lofi.mp3') 
+2

'exit()'はプロセスを終了します。あなたはたぶん '休憩 'したいです。 – cdarke

+1

私はあなたがbreakコマンドを探しているかもしれないと思うexit() – Whud

+0

ちなみに、スクリプトではexit()を使わないでください(対話的な使い方のためだけです)。代わりに 'sys.exit()'を使います。 – cdarke

答えて

1

exit()は、pythonアプリケーションを終了します。あなたがしたいのはbreakです。

+0

ワホウは明解に答えます!それは完璧です...申し訳ありませんが、私は正しいコマンドを見つけることができませんでした。私はあなたの答え – Antoine

+0

を受け入れるのに15分待つ必要があり、その後ブロックが既にファイルを閉じたので、 'f.close()'は "closed fileの操作"でクラッシュします。 –

+0

とにかくファイルを 'with'ブロックで開いたので' f.close() 'は必要ありません。 –

関連する問題