Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除文件间歇性失败_Python - Fatal编程技术网

Python 删除文件间歇性失败

Python 删除文件间歇性失败,python,Python,我正在使用Python3.6在Windows 7 64位上工作 我正试图从互联网上的不同位置下载一系列文件。完成下载文件后,我将其删除并下载下一个文件。我正在使用urllib.request.urlretrieve()下载,这似乎很好 每隔一段时间(可能是50次或100次尝试中的1次),我都无法删除我下载的文件。我收到错误“访问被拒绝”。异常发生后,如果我在Windows资源管理器中导航到试图删除的文件,该文件就在那里,并且没有任何与之相关的受限权限 有人能告诉我怎么做吗 以下是相关代码:

我正在使用Python3.6在Windows 7 64位上工作

我正试图从互联网上的不同位置下载一系列文件。完成下载文件后,我将其删除并下载下一个文件。我正在使用
urllib.request.urlretrieve()
下载,这似乎很好

每隔一段时间(可能是50次或100次尝试中的1次),我都无法删除我下载的文件。我收到错误“访问被拒绝”。异常发生后,如果我在Windows资源管理器中导航到试图删除的文件,该文件就在那里,并且没有任何与之相关的受限权限

有人能告诉我怎么做吗

以下是相关代码:

    if os.path.isfile(filePath):

        try:

            os.remove(filePath)

        except OSError as e:

            print("Failed with:", e.strerror)
            print("Error code:", e.code)
            print("Can't remove file: ", filePath)
            write_to_log("Can't remove file: ", filePath)
编辑:

作为对评论的回应,我使用上述方法下载

在尝试删除文件之前,我至少打开、读取和修改过一次该文件,因此我怀疑Windows可能认为该文件仍处于打开状态

我想我现在的问题是,如何检查文件是否可以删除?如果Windows仍在使用它,有什么方法可以让我等待吗

编辑(再次):


我在我的UbuntuLinux机器上尝试过这个方法(当然有不同的路径),看起来效果不错,所以这肯定是Windows的问题。

当你试图删除文件时,文件是否仍然打开?我怀疑Windows不允许您删除仍处于打开状态的文件。IIRC,您可以使用Process Explorer确定哪个或多个进程打开了文件,然后从那里调试您的进程。这是免费下载的。根据@Attie,Windows实际上不允许删除打开的文件。你能把下载文件的代码贴出来让我们看看是否有问题吗?