获取Windows错误32进程无法访问其他进程使用的文件

时间:2013-08-19 23:39:03

标签: python

我下载了具有非常长文件名的播客,我正在剥离它们,以便它们只有城市名称,日期和小时(意味着第一,第二或第三小时)。除了os.rename(file,new_name)之外,它似乎都工作,它告诉我Windows无法访问该文件。

import re, os, glob
from ID3 import *

for files in glob.glob("f:\\Download\*podcasts*"):
  os.chdir(files)
  for file in os.listdir("."):
   if re.search("\A[1-3].",file):  # original filenames begin with 1.,2. or 3.
      tags=ID3(file)
      date = re.search("\w*.-\w*.-\w*.",file) # filenames contain date in MMM-DD-YYYY
      date_clean = date.group(0).strip()
      hour = re.search("hr\d", file)  # file names also contain hr. 1,2 or 3 at end
      hour_clean = hour.group(0).strip()
      tags['ARTIST'] = "Portland Podcast"
      tags['TITLE'] = date_clean + hour_clean
      new_name = "Portland-" + date_clean + "-" + hour_clean +".mp3"
      print "Changing",file,"to",new_name+"."
      os.rename(file,new_name)               
  os.chdir("F:\\Download")                           
  os.getcwd()                                        
  os.system("pause")

1 个答案:

答案 0 :(得分:0)

有些东西持有你试图移动的文件的引用。在try/except周围放置一个shutil.rename块,然后打印出导致问题的文件。当您找出导致问题的文件时,找出谁持有对它的引用。

查找谁持有文件引用的一种方法是使用Process ExplorerUnlocker

更新

我看了一下ID3库的代码,看来,如果传入文件名,它就不会关闭文件,EVER:D

您应该执行以下操作:

with open(filename, 'rb') as f:
    tags = ID3(f)
    # do your stuff
shutil.rename(filename, ...)