2017-02-20 1 views
0

저는 파이썬 초보자입니다. 나는 웹 라디오를 가져 와서 파일 내부에 스트림을 저장하려고합니다. 잠시 후 콘텐츠를 플러시하고 싶습니다 (예를 들어 스트림을 1 시간 만 유지). 그래서 하나의 파일에 모든 스트림을 쓰지 않고 여러 파일에 스트림을 저장하려고합니다 (1 분 동안 output_1.bin, 다음 하나에 대해 output_2.bin ...)for 문을 종료하고 파이썬의 새 파일에 스트림을 작성하십시오.

그러나 나는 할 수 없습니다. "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()은 파이썬 응용 프로그램을 종료합니다. 원하는 것은 break입니다.

+0

Wahouuu 특급 답변! 완벽합니다 ... 죄송 합니다만 올바른 명령을 찾을 수 없었습니다. 그것은 솔기가 이미 파일을 닫았 기 때문에 응답을 – Antoine

+0

그리고 그 후에'f.close()'가 "닫힌 파일에 대한 연산"에서 충돌 할 때까지 15 분을 기다릴 필요가 있습니다. –

+0

사실'with '블록에 파일을 연 이후로는'f.close()'가 필요하지 않습니다. –

관련 문제