无法关闭文件,被其他进程使用,Windows错误32?

时间:2015-03-25 02:31:17

标签: python-2.7 urllib maya zipfile

我正在尝试使用一个自动下载文件并将其安装在正确目录中的脚本。但是当我尝试在正确提取所有内容后删除下载的文件时,我收到一个操作系统错误,它被另一个进程使用。我使用,所以文件应该正确关闭,但即使我把手动关闭源和zip_file仍然给出这个错误。有谁知道为什么?

它绝对被python解释器使用而不是任何其他程序,我使用“Unlocker”进行了测试。所以我唯一的结论就是我打开它后文件没有关闭。

# Downloads, updates, and installs the most recent version of flippy. Only tested on Windows operating systems.

import os
import shutil
import zipfile
import urllib
from os.path import expanduser
import maya.cmds as mc
import maya.mel as mel

download_dir = expanduser("~")
scripts_path = mc.internalVar(usd=True)
prefs_path = mc.internalVar(upd=True)

urllib.urlretrieve(r"https://drive.google.com/uc?export=download&id=0BwF-kFX824PuXzZVQmJja3JzNkE", r"%s/flippy.zip" %(download_dir))

with zipfile.ZipFile("%s/flippy.zip" %(download_dir)) as zip_file:
    for member in zip_file.namelist():
        with zip_file.open(member) as source:
            filename = os.path.basename(member)
            if filename == 'flippy.py' or filename == 'flippy_invert_attrs.txt':
                target = file(os.path.join(scripts_path, filename), "wb")
                copy = True
            elif filename == 'flippy_icon.png':
                target = file(os.path.join("%s/icons" %(prefs_path), filename), "wb")
                copy = True
            elif filename == 'shelf_NeoTools.mel':
                target = file(os.path.join("%s/shelves" %(prefs_path), filename), "wb")
                copy = True
            elif filename == 'CHANGELOG.txt':
                copy = False
                for line in source:
                    print line
            else:
                copy = False
            # copy file (taken from zipfile's extract)
            if copy:
                with source, target:
                    shutil.copyfileobj(source, target)
os.remove("%s/flippy.zip" %(download_dir))

此代码出现以下错误:

# Error: 32
# Traceback (most recent call last):
#   File "<maya console>", line 40, in <module>
# WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'F:/My Documents/flippy.zip' #

0 个答案:

没有答案