2017-08-31 65 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) 

有了这个,你将能够看到正在创建的文件夹里删除的文件。