On Aug 9, 6:01 pm, Chris Rebert <c...@rebertia.com> wrote: > 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
Thanks, they worked! -- http://mail.python.org/mailman/listinfo/python-list