simple renaming files program
MRAB
python at mrabarnett.plus.com
Mon Aug 9 10:18:49 EDT 2010
Dave Angel wrote:
> blur959 wrote:
>> On Aug 9, 6:01 pm, Chris Rebert <c... at rebertia.com> wrote:
>>
>>> <snip>
>>> 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 =aw_input("input file directory")
>>> s =aw_input("search for name")
>>> r =aw_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!
>>
>>
> A refinement: use os.path.join(), rather than just join(). It's
> smarter about adding the right kind of slash between the nodes, if
> needed. Currently, if you leave off the trailing slash (from
> "directory"), you'll end up with the files being one level up, and the
> individual files having a string prepended.
>
Have a look at the imports, Dave. :-)
More information about the Python-list
mailing list