1

REF_IMAGES指定した言語の参照ビットマップを保持するベース フォルダーを使用しています。など REF_IMAGES-EN、他のいくつかの言語フォルダーがあります。REF_IMAGES-NL

ベースフォルダーの名前をその言語に変更するスクリプトを作成したいと思います。REF_IMAGES-xx選択した言語フォルダーの名前をベースフォルダー名に変更した後。

これを行うために、フォルダー内の元の言語を追跡する txt ファイルを作成しました。

私のコードは次のとおりです。

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()

ただし、画像フォルダーの名前を元の名前に変更しようとすると、次のエラーが発生します。

WindowsError: [Error 32] The process cannot access the file because it is being used by another process 

いくつかの Unlocker プログラムを試しましたが、どれも機能しません。スクリプト自体がブロックしていると思いますが、何が原因かわかりません。

誰か知っていますか ?よろしく

4

2 に答える 2

0

これでテストします:

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


try:
    textFile.write("%s" %currentLanguage)
except WindowsError:
   pass
   textFile.close()
于 2013-03-28T15:34:03.803 に答える