2013-03-09 62 views
0
#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。“WindowsError 183”上os.rename()

这段代码在第16行“os.rename(val,(fn + ft))”上出错,错误为183,当我使用“os.rename(val,val +(fn + ft))”时,它将这个文件称为old.jpgnew.jpg,而不是new.jpg,这正是我想要的。

当代码失败时(写在上面的块中),我在音乐目录中得到一个new.jpg文件。这是第一个子目录中重命名的专辑图片,但第一个子目录重命名后没有专辑图稿文件。成功重命名第一张图像后失败,但由于某种原因将其移出其原始目录并进入父级“音乐”目录。

回答

4

更新回答

好吧,我没有看到应用不同的方法的一部分。这:

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

到:

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

可能是你想要什么

老回答

错误183在Windows中为already existent file。寻找你的代码位:

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似乎是静态值,这就是为什么你会得到该文件已存在。

+0

这就是我试图修复说“os.rename(val,val +(fn + ft))”。 问题在于,旧文件名是val的一部分。 – SciurusDoomus 2013-03-09 01:20:23

+0

@SciurusDoomus好吧,我正在查看代码块,并希望成为最新的代码。为您更新了答案。 – cwgem 2013-03-09 01:27:18

+0

不幸的是我得到了一个误报。当我查看这些文件夹时,我重命名的文件只有“folder.jpg”附加到文件名上。该文件也从原来的目录中跳到它上面的文件夹中。 请参阅http://imgur.com/wvjovGW – SciurusDoomus 2013-03-09 02:24:01

相关问题