[英]“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
的路徑在哪里? 根據您的邏輯,它最終將停留在最初更改目錄的位置。 鑒於fn
和ft
似乎是靜態值,因此這就是為什么文件已經存在的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.