我正在尝试删除源文件夹中的非字母数字字符,并使用非字母数字字符将任何文件重命名为版本而不使用此代码。但是,每次运行模块时都会出现此错误,
Traceback (most recent call last):
File "C:\tempstore\Filescan1", line 18, in <module>
os.rename(filename,newfilename)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
请帮忙吗?
os.chdir("C:\\tempstore\\source")
file_list = glob.glob("*.mpg*")
for filename in file_list:
if re.search('[^A-Za-z0-9._ ]+',filename,re.U) is not None:
print filename + " <--Dodgy File"
print re.sub('[^0-9a-zA-Z+_. ]+','-',filename)+ " <--Fixed File"
newfilename = re.sub('[^0-9a-zA-Z+_. ]+','-',filename)
os.rename(filename,newfilename)
elif re.search('[^A-Za-z0-9._ ]+',filename,re.U) is None:
print filename +" <-- Normal File"
unchanged_list = re.sub('[^A-Za-z0-9._ ]+','_',filename)
print unchanged_list
答案 0 :(得分:0)
关闭防病毒软件或至少将“On Access”扫描设置为关闭。我还建议使用re.sub生成newfilename
然后使用它来打印输出和重命名,即:
print re.sub('[^0-9a-zA-Z+_. ]+','-',filename)+ " <--Fixed File"
newfilename = re.sub('[^0-9a-zA-Z+_. ]+','-',filename)
应为:
newfilename = re.sub('[^0-9a-zA-Z+_. ]+','-',filename)
print 'Renaming to:', newfilename
并摆脱你的例子的最后两行。
答案 1 :(得分:0)
解决! 出现错误的原因是Windows不允许您在打开的目录中编辑文件,而我的程序正在打开目录来编辑文件。实际上,Catch-22,您无法在打开的目录中编辑文件,但您必须打开目录才能编辑文件。 我已经使用shutil.copy移动文件,然后重命名它们,这很好 为我的菜鸟行为道歉!