簡體   English   中英

嘗試os.rename時出現WindowsError 32

[英]WindowsError 32 while trying to os.rename

我使用的是基本文件夾REF_IMAGES ,其中保留了指定語言的參考位圖。 我還有其他幾種語言的文件夾,例如REF_IMAGES-ENREF_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程序,但是其中一些都無法正常工作。 我想這是腳本本身阻止了它,但我不知道是什么。

有人知道嗎 ? 問候

用這個測試:

  try: currentLanguage = textFile.read() except WindowsError: pass textFile.close() try: textFile.write("%s" %currentLanguage) except WindowsError: pass textFile.close() 

自己發現問題! 錯誤出在os.rename語法中。 通過做 :

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

os.path.join(imageFolder, currentLanguage)的輸出是IMAGES\\REF_IMAGES\\-FR os.path.join(imageFolder, currentLanguage)而不是IMAGES\\REF_IMAGES-FR

我現在使用的語法是:

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

感謝Mayk帶領我真正完成了這項工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM