簡體   English   中英

os.rename()上的“ WindowsError 183”

[英]“WindowsError 183” on os.rename()

#Opens a directory and outputs a text file there that lists every subdirectory in it

import os
from shutil import move

pathname = raw_input('Enter path for music directory (ex. C:\\Music): ')
fn = raw_input('Enter desired file name for all converted files: ')
ft = raw_input('Enter the file extension you want the program to look for (ex. .jpg): ')
changepath = []
os.chdir(pathname)
for path, subdirs, files in os.walk(pathname):
        for name in files:
            changepath.append(os.path.join(path, name))
for idx, val in enumerate(changepath):
    if val.lower().endswith(ft):
        os.rename(val, (fn + ft))
print('Complete')

我正在使用它將音樂文件夾中的所有專輯插圖重新命名為一件事,例如new.jpg。

此代碼在第16行“ os.rename(val,(fn + ft))”上失敗,錯誤183。當我使用“ os.rename(val,val +(fn + ft))”時,它可以工作,但它調用文件我想要的是old.jpgnew.jpg而不是new.jpg之類的東西。

當代碼失敗時(在上面的塊中按原樣編寫),我在音樂目錄中得到一個new.jpg文件。 它是第一個子目錄的重命名專輯插圖,但第一個子目錄之后沒有重命名專輯插圖文件。 成功重命名第一個圖像后,它失敗,但是由於某種原因將其移出其原始目錄並移至父“ Music”目錄。

更新的答案

好的,我沒有看到應用其他方法的部分。 這個:

os.rename(val, (fn + ft))

至:

os.rename(val, (os.path.dirname(val) + fn + ft))

可能就是你想要的

舊答案

Windows中的錯誤183是針對已經存在的文件 查看一下您的代碼:

fn = raw_input('Enter desired file name for all converted files: ')
ft = raw_input('Enter the file extension you want the program to look for (ex. .jpg): ')

這里沒有明顯的路徑信息,因此:

for idx, val in enumerate(changepath):
    if val.lower().endswith(ft):
        os.rename(val, (fn + ft))

fn + ft的路徑在哪里? 根據您的邏輯,它最終將停留在最初更改目錄的位置。 鑒於fnft似乎是靜態值,因此這就是為什么文件已經存在的原因。

暫無
暫無

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

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