2010-08-13 144 views
0

我想重新命名基于扩展名的文件。下面是我的代码,不知何故我的os.rename不工作。虽然没有任何错误。我不知道什么是错的。希望你们能帮忙。谢谢。重命名操作系统文件

import os 
import glob 
directory = raw_input("directory? ") 
ext = raw_input("file extension? ") 
r = raw_input("replace name") 
pattern = os.path.join(directory, "*" + ext) 
matching_files = glob.glob(pattern) 
file_number = len(matching_files) 



for filename in os.listdir(directory): 
    if ext in filename: 
     path = os.path.join(directory, filename) 
     seperated_names = os.path.splitext(filename)[0] 
     replace_name = filename.replace(seperated_names, r) 
     split_new_names = os.path.splitext(replace_name)[0] 

for pad_number in range(0, file_number): 
    padded_numbers = "%04d" % pad_number 
    padded_names = "%s_%s" % (split_new_names, padded_numbers) 
    newpath = os.path.join(directory, padded_names) 
    newpathext = "%s%s" % (newpath, ext) 


new_name = os.rename(path, newpathext) 
+0

我认为你的缩进是搞砸了;你可以修复它 – 2010-08-13 15:20:24

+0

@尼克T:请张贴您的答案作为一个正确的答案,所以我们可以投票。 – 2010-08-13 15:41:06

回答

1

我得到一个错误:

directory? c:\breakup 
file extension? .txt 
replace name? test 
Traceback (most recent call last): 
    File "foo.py", line 25, in <module> 
    new_name = os.rename(path, newpathext) 
WindowsError: [Error 2] The system cannot find the file specified 
shell returned 1 

总之,它看起来就像你在复杂的事情。这工作得很好:

import os 
directory = raw_input("directory? ") 
ext = raw_input("file extension? ") 
r = raw_input("replace name? ") 

for i, filename in enumerate(os.listdir(directory)): 
    if filename.endswith(ext): 
     oldname = os.path.join(directory, filename) 
     newname = os.path.join(directory, "%s_%04d%s" % (r, i, ext)) 
     os.rename(oldname, newname)