문제

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.

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.

To do this I have a created a txt file which keeps track of the original language in the folder.

My code is the following :

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 

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.

Does anyone know ? Regards

도움이 되었습니까?

해결책 2

Found the issue myself ! The error is in the os.rename syntax. by doing :

os.rename(imageFolder, os.path.join(imageFolder, currentLanguage))

The output of os.path.join(imageFolder, currentLanguage) is IMAGES\REF_IMAGES\-FR and not IMAGES\REF_IMAGES-FR as I expected

The syntax I use now is:

originalName = imageFolder + currentLanguage
os.rename(imageFolder, originalName)

Thanks to Mayk who lead me on it actually.

다른 팁

Test with this:

 try:
     currentLanguage = textFile.read()
 except WindowsError:
   pass
   textFile.close()


try:
    textFile.write("%s" %currentLanguage)
except WindowsError:
   pass
   textFile.close()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top