尝试os.rename时出现WindowsError 32 [英] WindowsError 32 while trying to os.rename
问题描述
我使用的是基本文件夹 REF_IMAGES
,在其中保存指定语言的参考位图.我还有其他几种语言的文件夹,例如 REF_IMAGES-EN
, REF_IMAGES-NL
等.
I'm using a base folder REF_IMAGES
where I keep reference bitmaps for a specified language. I have other several languages folder like REF_IMAGES-EN
, REF_IMAGES-NL
etc.
我想创建一个脚本,将基本文件夹重命名为其语言,即. REF_IMAGES-xx
,然后将所选语言文件夹重命名为基本文件夹名称.
I want to create a script which will rename the base folder to its language ie. REF_IMAGES-xx
and after rename the selected language folder to the base folder name.
为此,我创建了一个txt文件,该文件跟踪文件夹中的原始语言.
To do this I have a created a txt file which keeps track of the original language in the folder.
我的代码如下:
import os
# Define paths
baseFolder = 'D:\\IMAGES\\'
imageFolder = 'D:\\IMAGES\\REF_IMAGES'
LanguageFile = 'FolderLanguage.txt'
# Define selected language
language = '-FR'
# Read current language of baseFolder
textFile = open(os.path.join(imageFolder, LanguageFile), "r")
try:
currentLanguage = textFile.read()
finally:
textFile.close()
# Rename image folder to original name. This where the error comes up
os.rename(imageFolder, os.path.join(imageFolder, currentLanguage))
# Search for selected language folder and rename it to default one.
for folderName in os.listdir(baseFolder):
if folderName.endswith(language): # Look for selected language folder
os.rename(os.path.join(baseFolder, folderName), os.path.join(baseFolder, folderName.split('-')[0])) # Rename selected language folder to base folder
currentLanguage = language # Save the language the folder is switched to
textFile = open(os.path.join(imageFolder, LanguageFile), "w")
try:
textFile.write("%s" %currentLanguage)
finally:
textFile.close()
但是,尝试将图像文件夹重命名为其原始名称时出现以下错误:
However I get the following error while trying to rename image folder to its original name:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
我尝试了几个Unlocker程序,但都不起作用.我想这是脚本本身阻止了它,但是我不知道是什么.
I have tried several several Unlocker programs but non of them work. I suppose it is the script blocking it itself but I can't figure out what.
有人知道吗?问候
推荐答案
我自己发现了问题!错误出在os.rename语法中.通过执行:
Found the issue myself ! The error is in the os.rename syntax. by doing :
os.rename(imageFolder, os.path.join(imageFolder, currentLanguage))
os.path.join(imageFolder,currentLanguage)
的输出是 IMAGES \ REF_IMAGES \ -FR
,而不是 IMAGES \ REF_IMAGES-FR
>如我所料
The output of os.path.join(imageFolder, currentLanguage)
is IMAGES\REF_IMAGES\-FR
and not IMAGES\REF_IMAGES-FR
as I expected
我现在使用的语法是:
originalName = imageFolder + currentLanguage
os.rename(imageFolder, originalName)
感谢Mayk带领我真正地完成了任务.
Thanks to Mayk who lead me on it actually.
这篇关于尝试os.rename时出现WindowsError 32的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!