On Mon, Aug 9, 2010 at 2:44 AM, blur959 <blur...@hotmail.com> wrote: > Hi, all, I am working on a simple program that renames files based on > the directory the user gives, the names the user searched and the > names the user want to replace. However, I encounter some problems. > When I try running the script, when it gets to the os.rename part, > there will be an error. The error is : > n = os.rename(file, file.replace(s, r)) > WindowsError: [Error 2] The system cannot find the file specified > > I attached my code below, hope you guys can help me, Thanks! > > import os > directory = raw_input("input file directory") > s = raw_input("search for name") > r = raw_input("replace name") > > for file in os.listdir(directory): > n = os.rename(file, file.replace(s, r)) > print n
os.rename() takes paths that are absolute (or possibly relative to the cwd), not paths that are relative to some arbitrary directory (as returned by os.listdir()). Also, never name a variable "file"; it shadows the name of the built-in type. Hence (untested): from os import listdir, rename from os.path import isdir, join directory = raw_input("input file directory") s = raw_input("search for name") r = raw_input("replace name") for filename in listdir(directory): path = join(directory, filename) #paste the directory name on if isdir(path): continue #skip subdirectories (they're not files) newname = filename.replace(s, r) newpath = join(directory, newname) n = rename(path, newpath) print n Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list