2017-08-31 103 views
1

我想刪除while循環內的文件。這是我正在運行的代碼刪除while循環內的文件

while 1: 
    tts = gTTS(text="Hello", lang='en', slow=False) 
    tts.save("file.mp3") 
    playsound.playsound("file.mp3", True) 
    os.remove("file.mp3") 

但是,直到while循環停止後纔會刪除該文件。有沒有辦法在運行while循環時刪除文件?

+2

你怎麼知道文件沒有被刪除?你是怎麼檢查的? – litelite

+1

「直到while循環停止纔會刪除文件」。那麼,你處於一個無限的狀態,它在刪除後重新創建文件 – Wondercricket

+1

因爲你一直在用相同的名字重新創建它嗎?你怎麼知道它沒有被刪除和重拍? – roganjosh

回答

1

當您撥打tts.save("file.mp3")並刪除os.remove("file.mp3")時,會創建一個文件。由於您的while循環持續運行,因此在其銷燬後立即創建。這個過程發生得如此之快,以至於在觀察目錄時,您無法用眼睛看到文件的刪除/創建。

0

我認爲有可能文件正在被擦除,但是然後它將在循環的下一次迭代中被重新創建,而不會發現。嘗試重命名文件,以便知道它是否被刪除。

我也建議不要做無限循環。

0

由於Vineet JainDayana提到,您可能會刪除文件,但速度比您所看到的要快。

您當然可以自己驗證一下。相反的:

while 1: 

可以使用for循環使用範圍()來爲您的文件不同的名稱。你會碰到這樣的:

from gtts import gTTS 
import playsound 
import os 

for item in range(1, 10): 
    tts = gTTS(text="Hello", lang='en', slow=False) 
    filename = str(item) + ".mp3" 
    tts.save(filename) 
    playsound.playsound(filename, True) 
    os.remove(filename) 

有了這個,你將能夠看到正在創建的文件夾裏刪除的文件。